MySQL:用户'userName'@'localhost'的访问被拒绝
Posted
技术标签:
【中文标题】MySQL:用户\'userName\'@\'localhost\'的访问被拒绝【英文标题】:MySQL: Access denied for user 'userName'@'localhost'MySQL:用户'userName'@'localhost'的访问被拒绝 【发布时间】:2015-01-31 21:09:42 【问题描述】:我在使用 phpMyAdmin 创建和授予用户权限时遇到问题。我有一个 Java swing 应用程序,它需要连接到这个数据库。
我如何创建用户并授予权限如下,一步一步。
-
打开 phpMyAdmin
转到“用户”标签。
点击
Add New User
提供用户名,选择Any Host
作为主机(因此 % 会显示在其文本框中),并提及密码。 Any host
是因为需要远程访问。
在Global Privileges
下选择Select
- 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
,则连接工作正常。
【问题讨论】:
【参考方案1】: 创建用户之后。 点击编辑权限。 将任何主机更改为 Localhost。 应用您的权限。 滚动到底部并 确保选中“keep old one”,然后按 Go。【讨论】:
不,就是这样。 Any Host 不包括 Localhost。 好的。想象一下我通过 *** 远程连接,在这种情况下,它会工作吗?我的意思是Any Host
的东西?
是的。您将有两个用户,一个用于远程工作的 Any Host,另一个用于 Localhost。【参考方案2】:
你需要给mysql中的userName@localhost授予权限。
GRANT ALL PRIVILEGES ON database_name TO userName@localhost IDENTIFIED BY 'password';
FLUSH PRIVILEGES;
【讨论】:
【参考方案3】:有时,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;
【讨论】:
【参考方案4】:您是否为 phpmyadmin 设置了任何密码。如果是,请将其包含在密码字段中。或者您可以尝试喜欢这个
con = DriverManager.getConnection("jdbc:mysql://"+ip+":3306/databaseName","localhost","");
【讨论】:
JDBC 获取用户的密码,而不是 PHPMyAdmin 对吗?当然用户必须使用他的用户名和密码登录。以上是关于MySQL:用户'userName'@'localhost'的访问被拒绝的主要内容,如果未能解决你的问题,请参考以下文章
MySQL:用户'userName'@'localhost'的访问被拒绝
Mysql创建新用户后无法登录,提示 Access denied for user 'username'@'localhost' (using password: YE