列出MySQL中没有数据库的用户

时间:2015-03-18 16:45:14

标签: mysql database

我正在尝试列出 MySQL 5.0.67 安装中没有数据库关联的所有用户,因为我必须删除它们。 Mysql安装以前有 ~500 数据库,有人做了一种清理删除所有空数据库,但不删除相关用户。

我想我应该使用information_schemamysql数据库来查找我正在寻找的内容。正确?

有人可以帮我吗?

提前致谢!

2 个答案:

答案 0 :(得分:1)

在MySQL上,用户不一定必须与数据库相关,但如果您需要知道哪些用户与数据库无关,您应该从数据库“mysql”查询表“db”和“user”

尝试此操作以了解与数据库无关的所有用户“甚至是root用户

select
    u.host,
    u.user
from
    mysql.user as u left join mysql.db db on u.User = db.User and u.Host = db.Host
where
    db.Host is null and
    db.User is null

答案 1 :(得分:1)

您的问题的解决方案将包含两部分

  1. 我们需要列出所有MySQL用户

    从mysql.user;

  2. 中选择用户
  3. 我们需要检查用户对数据库的权限

    从mysql.db中选择*;

  4. 最后,我们可以将这两个查询合并为一个显示数据库权限表中不存在的用户名:

    select users.user from mysql.user as users where not exists (
        select privileges.user from mysql.db as privileges 
            where privileges.user=users.user
    ) group by user; -- GROUP BY added only for distinct
    

    小心,此解决方案会列出对您的某个数据库不具备特定权限的所有用户。例如,它还会显示您的root帐户(因为它可能确实没有任何特定权限)和用户帐户,只能访问特定表(不是数据库!)。