【问题标题】:Show MySQL database for user为用户显示 MySQL 数据库
【发布时间】:2010-10-07 12:47:15
【问题描述】:

有人知道 MySQL 语法来显示特定用户有权在 MySQL 数据库中查看的数据库名称吗?假设用户正在 'dimitris' 访问 'localhost' 上的数据库,查看他有权选择、更新、插入等的所有数据库的语法是什么?

【问题讨论】:

    标签: mysql


    【解决方案1】:

    对于当前登录的用户,可以使用SHOW DATABASES;。但是,如果用户拥有SHOW DATABASES; 权限,他将能够查看所有数据库,即使他无权访问它。 (reference)

    假设您对mysql.db 表具有读取权限,您可以使用:

    SELECT * FROM mysql.db WHERE User="dimitris";
    

    这将返回一个结果集,其中包含Host(例如localhost)、Db(例如somedatabase)、User(例如dimitris)和该数据库的权限(Select_privUpdate_priv 等)

    【讨论】:

    • 谢谢。比接受的答案更完整的答案。投票。
    【解决方案2】:

    您可以获取您可以访问的数据库列表:

    SHOW DATABASES;
    

    如果您想获取其他用户的列表,而不是您登录的用户,您必须查询mysql.db 表。

    【讨论】:

    • 缺少关于 mysql.db 查询应该是什么的信息。出于这个原因,我认为 Lekensteyn 的回答更完整。
    猜你喜欢
    • 2012-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-08
    • 2014-03-01
    • 2021-03-10
    相关资源
    最近更新 更多