【发布时间】:2010-10-07 12:47:15
【问题描述】:
有人知道 MySQL 语法来显示特定用户有权在 MySQL 数据库中查看的数据库名称吗?假设用户正在 'dimitris' 访问 'localhost' 上的数据库,查看他有权选择、更新、插入等的所有数据库的语法是什么?
【问题讨论】:
标签: mysql
有人知道 MySQL 语法来显示特定用户有权在 MySQL 数据库中查看的数据库名称吗?假设用户正在 'dimitris' 访问 'localhost' 上的数据库,查看他有权选择、更新、插入等的所有数据库的语法是什么?
【问题讨论】:
标签: mysql
对于当前登录的用户,可以使用SHOW DATABASES;。但是,如果用户拥有SHOW DATABASES; 权限,他将能够查看所有数据库,即使他无权访问它。 (reference)
假设您对mysql.db 表具有读取权限,您可以使用:
SELECT * FROM mysql.db WHERE User="dimitris";
这将返回一个结果集,其中包含Host(例如localhost)、Db(例如somedatabase)、User(例如dimitris)和该数据库的权限(Select_priv 、Update_priv 等)
【讨论】:
您可以获取您可以访问的数据库列表:
SHOW DATABASES;
如果您想获取其他用户的列表,而不是您登录的用户,您必须查询mysql.db 表。
【讨论】:
mysql.db 查询应该是什么的信息。出于这个原因,我认为 Lekensteyn 的回答更完整。