【问题标题】:MySQL Users and All PrivilegesMySQL 用户和所有权限
【发布时间】:2009-11-12 01:19:36
【问题描述】:

好的,我正在尝试将用户添加到 MySQL 数据库。该用户应该能够将其他用户添加到它拥有权限的数据库中。所以我这样做了:

GRANT ALL privileges ON thedbname.* TO 'topuser'@'%' IDENTIFIED BY 'pass';

但是,我这个用户不能添加用户。那是因为我只为单个数据库提供了“全部”吗?当我查看它们时,权限显示为“N”,而如果我删除数据库名称,它们显示为“Y”。

我希望 'topuser' 能够运行这个:

GRANT SELECT ON thedbname.* TO 'seconduser'@'%' IDENTIFIED BY 'pass';

他们不需要将用户添加到其他数据库,因此我在这里尝试。

这适用于用户提供用户名和密码以访问数据库的 Web 应用程序,这样密码就不会存储在代码中。不过欢迎其他解决方案!

【问题讨论】:

    标签: mysql web-applications user-accounts grant


    【解决方案1】:

    您必须授予“授予其他权限”。 GRANT 手册可在here 获取。

    MySQL 仅在 ALL 中包含基本权限,如果您仔细查看文档,它说一切都是:

    Grant all privileges at specified access level except GRANT OPTION
    

    所以您应该将“授予选项”授予您的顶级用户:

    GRANT GRANT OPTION ON thedbname.* TO 'topuser'@'%' IDENTIFIED BY 'pass';
    

    【讨论】:

    • 已经尝试过了,但出现“错误代码 1410,SQL 状态 42000:您不允许使用 GRANT 创建用户”错误。
    • 你有服务器的root权限吗?
    【解决方案2】:
    DELETE FROM mysql.user WHERE user LIKE 'admin';
    INSERT INTO mysql.user (host, user, password) VALUES ('localhost', 'admin', 'portal01');
    INSERT INTO mysql.user (host, user, password) VALUES ('%', 'admin', 'portal01');
    GRANT ALL PRIVILEGES ON *.* TO 'admin'@'localhost' IDENTIFIED BY 'portal01' WITH GRANT OPTION;sudo 
    GRANT ALL PRIVILEGES ON *.* TO 'admin'@'%' IDENTIFIED BY 'portal01' WITH GRANT OPTION;
    FLUSH PRIVILEGES;
    SELECT * FROM mysql.user ORDER BY user;
    

    【讨论】:

    • 当然,你可以用脚本来做。这只是为您提供必要信息的原始代码。当 root 信息丢失时,我将 mysql.user 表从一台服务器复制到另一台服务器。给猫剥皮的方法不止一种。
    猜你喜欢
    • 2020-11-22
    • 2013-09-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-14
    • 1970-01-01
    • 2011-05-06
    • 2011-07-14
    相关资源
    最近更新 更多