好的,我正在尝试将用户添加到MySQL数据库。此用户应该能够将其他用户添加到其具有权限的数据库中。所以我这样做了:
GRANT ALL privileges ON thedbname.* TO 'topuser'@'%' IDENTIFIED BY 'pass';
但是,我这个用户无法添加用户。那是因为我只为一个数据库提供了“全部”吗?当我查看权限时,权限显示为“N”,而如果我删除数据库名称,则显示为“Y”。
我希望'topuser'能够运行它:
GRANT SELECT ON thedbname.* TO 'seconduser'@'%' IDENTIFIED BY 'pass';
他们不需要将用户添加到其他数据库,因此我在这里尝试。
这适用于Web应用程序,其中用户提供用户名和密码来访问数据库,以便密码不会存储在代码中。欢迎其他解决方案!
答案 0 :(得分: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';
答案 1 :(得分:0)
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;