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

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

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

  1. 打开phpMyAdmin
  2. 转到“用户”标签。
  3. 单击“ Add New User
  4. 提供用户名,选择Any Host作为主机(因此%显示在其文本框中),并提及密码。 Any host都是因为需要远程访问。
  5. 选择Global PrivilegesData下的选择
  6. 点击Go
  7. 现在我再次进入“ Users选项卡起始页面。
  8. 单击我新创建的用户上的Edit Privileges
  9. Database-specific privileges下选择数据库
  10. Database-specific privilegesData部分下勾选所有内容。
  11. 点击Go

现在,每当我的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 ,则连接正常。

  • 在您成为用户之后。
  • 单击编辑权限。
  • 更改Localhost的任何主机。
  • 申请你的特权。
  • 滚动到底部
  • 确保选中“保持旧”,然后按“执行”。

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

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

有时,mysql服务器没有从本地连接获得’localhost’,你应该尝试:

 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; 

你有没有为phpmyadmin设置任何密码。 如果是,请在密码字段中包含该信息。或者您可以试试这个

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