繁体   English   中英

尝试通过Eclipse,Java连接到mysql数据库时访问被拒绝

[英]Access denied when trying to connect to mysql database via eclipse, java

我正在尝试连接到mysql数据库,但遇到一个相同的错误:javax.servlet.ServletException:java.sql.SQLException:用户'user'@'localhost'的访问被拒绝(使用密码:YES)

我已经尝试了以下解决方案:

  1. 检查了我的用户名和密码。 MySQL连接通过用户名= user1,密码= 123建立。当我连接到数据库时,我在代码中使用了相同的代码: Class.forName("com.mysql.jdbc.Driver").newInstance(); Connection con = DriverManager.getConnection( "jdbc:mysql://localhost:3306/employee","user1", "123"); Class.forName("com.mysql.jdbc.Driver").newInstance(); Connection con = DriverManager.getConnection( "jdbc:mysql://localhost:3306/employee","user1", "123");
  2. 通过以下方式向user1授予特权: GRANT ALL PRIVILEGES ON * . * TO 'user1'@'localhost'; FLUSH PRIVILEGES; GRANT ALL PRIVILEGES ON * . * TO 'user1'@'localhost'; FLUSH PRIVILEGES; 顺便说一句,当我尝试与'root'@'localhost'连接时,我遇到了同样的问题。 您有什么想法为什么它仍然无法使用?

MySQL JDBC仅能够通过TCP / IP(在Unix上或TCP / IP或Windows上的命名管道)进行连接。

MySQL JDBC驱动程序无法使用本地unix套接字建立连接。

在Unix上的MySQL中, localhost具有我们可能期望的不同含义。 它不是127.0.0.1 TCP / IP回送地址的主机名同义词。 在Unix上,MySQL用户

'user1'@'localhost'

指定只能通过unix套接字文件连接的用户; 无法通过TCP / IP连接到该用户。


上面解释了为什么MySQL拒绝来自JDBC的连接:连接尝试失败,因为不存在匹配的用户。

要创建从TCP / IP环回地址连接的MySQL用户,假设MySQL以--skip-name-resolve且没有--skip-networking ,我们可以将user指定为:

'user'@'127.0.0.1'

该用户将允许来自JDBC的连接。

(如果启用了MySQL DNS名称解析,那么我们将需要使用解析为回送地址的主机名;或者我们可以考虑对用户的主机名部分使用通配符'%'。)

试试看可能会有所帮助:

1)转到mysql终端。 2)mysql>使用mysql; 3)mysql>选择用户,从用户主机; 4)用户旁边,将主机设置为“%”,而不是localhost

现在在连接中而不是localhost tryp中指定服务器的IP地址。

希望这对您有所帮助。 :)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM