用户访问被拒绝' test_user' @' test_host' (使用密码:是)

时间:2015-04-28 18:55:43

标签: java mysql

我有一个名为test_user

的mysql用户
GRANT all privileges on *.* to 'test_user'@'%' identified by 'test_passwd'

我可以从我的JAVA代码远程使用此用户。当我在服务器中运行代码时,我得到了

Access denied for user 'test_user'@'test_host' (using password: YES)

在为test_user授予所有权限后,我已经运行FLUSH PRIVILEGES;并重新启动了mysql服务。

我尝试使用控制台

在服务器中登录mysql
mysql -utest_user -ptest_passwd
ERROR 1045 (28000): Access denied for user 'test_user'@'localhost' (using password: YES)

似乎我只能远程使用test_user而不是服务器本身。有什么建议可以解决这个问题吗?

-------新测试----------

我试图在服务器上不提供密码,它正在运行

mysql -utest_user

我需要远程和本地使用密码。有什么建议吗?

2 个答案:

答案 0 :(得分:0)

应该是:

CREATE USER 'monty'@'%' IDENTIFIED BY 'some_pass';

然后

GRANT ALL PRIVILEGES ON *.* TO 'monty'@'localhost'
    ->     WITH GRANT OPTION;

如果不起作用,请尝试使用root登录并查看:

SHOW GRANTS FOR 'admin'@'localhost';

到处替换您的值

试试这篇文章: SO solution to this problem

答案 1 :(得分:0)

我之前遇到过类似的问题。

拥有%应允许用户从包括localhost在内的任何地方进行连接(假设您为granted privilegesflushed privileges)。但是,如果您没有制作secure install of mysql,则最有可能在您的计算机上留下ghost localhost。因此,您不仅可以在没有用户的情况下运行mysql,也不会从localhost命令行提供密码,但ghost localhost由于某种原因与从其创建的任何其他用户(除root之外)发生冲突登录localhost

如果您执行select user, password, host from mysql.user;您可能会看到没有姓名,没有密码和主机localhost的用户。

使用drop user ''@'localhost;

删除该用户

flush privileges再次。

尝试使用localhost上的其他用户进行连接,它应该可以正常工作。