Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java MySQL:拒绝用户“用户名”@“本地主机”的访问_Java_Mysql_Database_Jdbc_Phpmyadmin - Fatal编程技术网

Java MySQL:拒绝用户“用户名”@“本地主机”的访问

Java MySQL:拒绝用户“用户名”@“本地主机”的访问,java,mysql,database,jdbc,phpmyadmin,Java,Mysql,Database,Jdbc,Phpmyadmin,我在使用phpMyAdmin创建和设置用户权限时遇到问题。我有一个JavaSwing应用程序,它需要连接到这个数据库 下面是我如何创建用户和授予权限的步骤 打开phpMyAdmin 转到“用户”选项卡。 单击添加新用户 提供用户名,选择任意主机作为主机,以便%显示在其文本框中,并提及密码。因为需要远程访问,所以任何主机都无法访问。 在“全局权限-数据”下选择“选择” 点击Go 现在我又进入了“用户”选项卡的起始页。 单击我新创建的用户的编辑权限。 选择数据库特定权限下的数据库 勾选数据库特定权限

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

下面是我如何创建用户和授予权限的步骤

打开phpMyAdmin 转到“用户”选项卡。 单击添加新用户 提供用户名,选择任意主机作为主机,以便%显示在其文本框中,并提及密码。因为需要远程访问,所以任何主机都无法访问。 在“全局权限-数据”下选择“选择” 点击Go 现在我又进入了“用户”选项卡的起始页。 单击我新创建的用户的编辑权限。 选择数据库特定权限下的数据库 勾选数据库特定权限下的所有内容,数据部分。 点击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而不是任何主机,连接工作正常

在您创建了您的用户之后。 单击编辑权限。 更改本地主机的任何主机。 运用你的特权。 滚动到底部并单击鼠标右键 确保选择了“保留旧的”,然后按Go。
您需要将权限授予userName@localhost在mysql中

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","");

不,就是这样。任何主机都不包括Localhost.OK。假设我通过VPN远程连接,在这种情况下,它会工作吗?我是说有什么东道主的事吗?是的。您将有两个用户,一个用于远程工作的任何主机,另一个用于本地主机。JDBC使用用户的密码,而不是PHPMyAdmin,对吗?当然,用户必须使用其用户名和密码登录。