2012-12-31 125 views
8

刚刚开始使用mysql。我登录与根,并按照网上参考来创建一个新用户:mysql新用户访问被拒绝

mysql> CREATE USER 'abc'@'%' IDENTIFIED BY '111111'; 
mysql> GRANT ALL PRIVILEGES ON *.* TO 'abc'@'%' WITH GRANT OPTION; 

然后我辞职,并试图以新用户登录:

mysql --user=abc --password=111111 mysql 

但得到一个错误信息:

访问被拒绝的用户 'ABC' @ 'localhost' 的(使用密码:YES)

我错过了什么?

+1

你有刷新权限吗?FLUSH PRIVILEGES;' –

+0

1)在上述2语句后添加FLUSH PRIVILEGES,并使用'localhost'或'IP地址'而不是'%',这些对我来说很有用。希望这会有所帮助! –

回答

17

运行这个工作

FLUSH PRIVILEGES 

一旦你给你的用户所需的权限,您将需要刷新,以完成设置,并进行新的设置工作权限。要做到这一点,在SQL命令提示符中运行以下命令:

[编辑]
如果您想从本地主机连接也,你应该创建一个帐户。

有必要让'用户'这两个帐户能够从任何地方连接 作为'用户'。如果没有本地主机帐户,当用户从 本地主机连接时, mysql_install_db创建的localhost的 匿名用户帐户优先。因此,'用户'将被视为匿名用户。 原因是匿名用户帐户比'user'@'%'帐户具有更多 特定主机列值,因此在用户表排序顺序中更早地出现 。 )

FYI:http://dev.mysql.com/doc/refman/5.5/en/adding-users.html

+1

尝试过授予权限后,仍然不能正常工作 – Ryan

+0

嗯,这应该适用于创建“超级用户”权限。尝试使用root用户登录并查看是否创建了记录! – Venu

+0

运行select * from user where user ='abc'。记录在那里,权限设置为Y. – Ryan

0

这是它。

grant all privileges on *.* to `root`@`%` identified by 'chnagethepasswordhere'; 
flush privileges; 
--helps to excute store procedure as root user 

GRANT EXECUTE ON PROCEDURE mbu4u.ratingProcedure TO 'root'@'ip.ip.ip.ip' identified by 'changepasswordheere'; 

GRANT ALL ON mbu4u.* TO [email protected]'ip.ip.ip.ip' IDENTIFIED BY 'changepassword'; 

dantheman @have a nice day!