gpt4 book ai didi

java - 尝试通过 eclipse、java 连接到 mysql 数据库时访问被拒绝

转载 作者:行者123 更新时间:2023-11-29 03:16:45 26 4
gpt4 key购买 nike

我正在尝试连接到 mysql 数据库,但出现了一个相同的错误:javax.servlet.ServletException: java.sql.SQLException: Access denied for user 'user'@'localhost' (using password: YES )

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

  1. 检查了我的用户名和密码。 MySQL 连接是通过 username = user1,password = 123 建立的。当我连接到数据库时,我在我的代码中使用相同的方法:Class.forName("com.mysql.jdbc.Driver").newInstance();
    连接 con = DriverManager.getConnection(
    "jdbc:mysql://localhost:3306/employee","user1", "123");
  2. 以下列方式授予 user1 权限:授予 * 上的所有特权。 * 到 'user1'@'localhost';
    冲洗特权;
    顺便说一句,当我尝试连接“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'@'127.0.0.1'

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

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

关于java - 尝试通过 eclipse、java 连接到 mysql 数据库时访问被拒绝,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54637294/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com