2009-11-12 87 views
0

好吧,我试图添加一个用户到MySQL数据库。该用户应该能够将其他用户添加到其有权访问的数据库中。所以我这样做:MySQL用户和所有权限

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

但是,我这个用户不能添加用户。那是因为我只给了他们所有的单个数据库吗?当我查看它们时,权限显示为'N',而如果我删除数据库名称,则显示为'Y'。

我想“topuser”才能够运行这个命令:

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

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

这是用于Web应用程序,其中用户提供用户名和密码来访问数据库,以便密码不会存储在代码中。其他解决方案虽然欢迎

回答

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'; 
+0

尝试已经而是“错误代码1410,SQL状态42000:您是不允许创建与用户授予”错误。 – ajr 2009-11-12 15:29:12

+0

你有权限访问服务器吗? – RageZ 2009-11-13 01:58:05

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; 
+0

你可以使用代码工具吗?它看起来不那么好... – Castiblanco 2013-04-02 15:54:43

+0

当然,你可以用脚本来做到这一点。这只是提供必要信息的原始代码。当根信息丢失时,我将一个mysql.user表从一台服务器复制到另一台服务器。有一种以上的方法来剥皮猫。 – Petrovitch 2013-04-02 16:45:33