MySQL 中创建的用户总是能列出所有数据库名

2014-12-02 00:07:32 +08:00
 andybest
例如:GRANT ALL PRIVILEGES ON aaa.* TO bbb@"%" IDENTIFIED BY 'xxx';

这样创建的用户 bbb 实际仅有 aaa 数据库的权限,但 show databases 总是可以列出所有数据库名

有没有可能让 bbb 仅能列出他有操作权限的数据库名而不是全部?(不是简单粗暴的直接禁止掉该用户的 show databases 命令权限)
3914 次点击
所在节点    MySQL
6 条回复
yinian1992
2014-12-02 00:44:42 +08:00
mornlight
2014-12-02 00:45:48 +08:00
我用MysqlWorkbench 创建用户并赋予权限的,试过没有你说的这个问题。
你看看你有没有对这个用户赋予全局show databases 权限
extreme
2014-12-02 01:05:37 +08:00
试试这个:

CREATE USER 'username'@用户的IP' IDENTIFIED BY '用户的密码';

GRANT SELECT, INSERT, UPDATE, REFERENCES, DELETE, CREATE, DROP, ALTER, INDEX, TRIGGER, CREATE VIEW, SHOW VIEW, EXECUTE, ALTER ROUTINE, CREATE ROUTINE, CREATE TEMPORARY TABLES, LOCK TABLES, EVENT ON `数据库名称`.* TO 'username'@'用户的IP';

GRANT GRANT OPTION ON `数据库名称`.* TO 'username'@'用户的IP';
extreme
2014-12-02 01:07:54 +08:00
@extreme 第一句MySQL查询漏了个单引号:

CREATE USER 'username'@'用户的IP' IDENTIFIED BY '用户的密码';
andybest
2014-12-02 01:12:22 +08:00
@yinian1992 @mornlight @extreme

谢谢,但是禁止掉了该用户 show databases 命令权限,也就是该用户无法执行此指令,无法列出任何数据库

有没有可能像问题里所说的,仅列出该用户有操作权限的数据库名称?
lsylsy2
2014-12-02 02:16:50 +08:00
如果你是卖主机之类,这条语句还是趁早禁用掉好;
这条语句会扫描你机器上所有数据库的权限表(判断该用户能否访问),当数据库数量大到一定程度的时候会全库阻塞,一场灾难。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/150791

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX