MySQL用户和所有权限

MySQL用户和所有权限,mysql,web-applications,user-accounts,grant,Mysql,Web Applications,User Accounts,Grant,好的,我正在尝试向MySQL数据库添加一个用户。此用户应该能够将其他用户添加到其拥有权限的数据库中。所以我这样做了: GRANT ALL privileges ON thedbname.* TO 'topuser'@'%' IDENTIFIED BY 'pass'; 但是,我认为该用户无法添加用户。这是因为我只为一个数据库提供了“全部”吗?当我查看权限时,权限显示为“N”,而如果我删除数据库名称,权限显示为“Y” 我希望“topuser”能够运行以下操作: GRANT SELECT ON th

好的,我正在尝试向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仅在ALL中包含基本权限,如果您仔细查看文档,它说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访问权限?当然,可以使用脚本执行此操作。这只是提供必要信息的原始代码。当根信息丢失时,我会将mysql.user表从一台服务器复制到另一台服务器。剥猫皮的方法不止一种。
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;