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

我正在尝试连接到 mysql 数据库,但我得到一个相同的错误:javax.servlet.ServletException: java.sql.SQLException: Access denied for user 'user'@'localhost' (using password: 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”时,我遇到了同样的问题。你有什么想法为什么它仍然不起作用?


蝴蝶刀刀
浏览 274回答 2
2回答

撒科打诨

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> select user, host from user;4)在您旁边的用户将主机设置为“%”而不是本地主机.现在在连接中而不是 localhost tryp 指定服务器的 IP 地址。希望这对您有所帮助。:)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java