MySQL:访问被拒绝用户'userName'@'localhost'

时间:2014-12-03 10:37:04

标签: java mysql database jdbc phpmyadmin

我遇到了使用phpMyAdmin为用户创建和屏蔽权限的问题。我有一个Java swing应用程序,它需要连接到这个数据库。

我是如何创建用户并获得权限的,如下所示。

  1. 打开phpMyAdmin
  2. 转到“用户”标签。
  3. 点击Add New User
  4. 提供用户名,选择Any Host作为主机(因此%显示在文本框中),并提及密码。 Any host是因为需要远程访问。
  5. Select - Global Privileges
  6. 下选择Data
  7. 点击Go
  8. 现在我再次进入Users标签页首页。
  9. 点击我新创建的用户上的Edit Privileges
  10. 选择Database-specific privileges
  11. 下的数据库
  12. 勾选Database-specific privilegesData部分下的所有内容。
  13. 点击Go
  14. 现在,只要我的Java应用程序连接到它,就会出现以下错误

    java.sql.SQLException: Access denied for user 'userName'@'localhost' (using password: YES)
    

    这是我在Java应用程序中连接数据库的方式

    con = DriverManager.getConnection("jdbc:mysql://"+ip+":3306/databaseName","user","password");
    

    在这里,对于变量ip,我尝试了localhost127.0.0.1,但仍然没有好处。我做错了什么?

    如果我在步骤4中选择Localhost而不是Any Host,我注意到连接正常。

4 个答案:

答案 0 :(得分:1)

  • 制作完用户后。
  • 点击编辑权限。
  • 更改Localhost的任何主机。
  • 申请你的特权。
  • 滚动到底部
  • 确保"保持旧的"被选中并按下Go。

答案 1 :(得分:0)

您需要在mysql中为userName @ localhost授予权限。

GRANT ALL PRIVILEGES ON database_name TO userName@localhost IDENTIFIED BY 'password';
FLUSH PRIVILEGES;

答案 2 :(得分:0)

有时,mysql服务器没有得到本地主机'从本地连接,你应该尝试:

GRANT ALL PRIVILEGES ON database_name TO 'userName'@'theHostName' IDENTIFIED BY 'password';

或以更危险的方式:

GRANT ALL PRIVILEGES ON database_name TO 'userName'@'%' IDENTIFIED BY 'password';

最后

FLUSH PRIVILEGES;

答案 3 :(得分:0)

您是否为phpmyadmin设置了任何密码。如果是,请在密码字段中包含该内容。或者您可以试试这个

con = DriverManager.getConnection("jdbc:mysql://"+ip+":3306/databaseName","localhost","");