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

时间:2019-02-11 18:56:39

标签: java mysql eclipse

我正在尝试连接到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");
  2. 通过以下方式授予user1特权: GRANT ALL PRIVILEGES ON * . * TO 'user1'@'localhost'; FLUSH PRIVILEGES; 顺便说一句,当我尝试与'root'@'localhost'连接时,我遇到了同样的问题。 您有什么想法为什么它仍然无法使用?

2 个答案:

答案 0 :(得分:0)

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'@'127.0.0.1'

该用户将允许通过JDBC连接。

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

答案 1 :(得分:0)

尝试一下可能会有所帮助:

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

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

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