MySQL:访问被拒绝用户’userName’@’localhost’
我在使用phpMyAdmin为用户创建和屏蔽权限时遇到问题。 我有一个Java swing应用程序,它需要连接到这个数据库。
我是如何创建用户并授予权限的,如下所示。
- 打开phpMyAdmin
- 转到“用户”标签。
- 单击“
Add New User
- 提供用户名,选择
Any Host
作为主机(因此%显示在其文本框中),并提及密码。Any host
都是因为需要远程访问。 - 选择
Global Privileges
–Data
下的选择 - 点击
Go
- 现在我再次进入“
Users
选项卡起始页面。 - 单击我新创建的用户上的
Edit Privileges
。 - 在
Database-specific privileges
下选择数据库 - 在
Database-specific privileges
,Data
部分下勾选所有内容。 - 点击
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
,我尝试了localhost
和127.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","");