为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

蝴蝶刀刀 2022-06-15 15:39:08
我正在尝试连接到 mysql 数据库,但我得到一个相同的错误:javax.servlet.ServletException: java.sql.SQLException: Access denied for user 'user'@'localhost' (using password: YES)我已经尝试过以下解决方案:检查了我的用户名和密码。MySQL 连接是通过用户名 = user1,密码 = 123 建立的。当我连接到数据库时,我在我的代码中使用相同的内容:Class.forName("com.mysql.jdbc.Driver").newInstance(); Connection con = DriverManager.getConnection( "jdbc:mysql://localhost:3306/employee","user1", "123");通过以下方式授予 user1 的权限: GRANT ALL PRIVILEGES ON * . * TO 'user1'@'localhost'; FLUSH PRIVILEGES;顺便说一下,当我尝试连接“root”@“localhost”时,我遇到了同样的问题。你有什么想法为什么它仍然不起作用?
查看完整描述

2 回答

?
撒科打诨

TA贡献1934条经验 获得超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 名称解析,那么我们需要使用解析为环回地址的主机名;或者我们可以考虑为用户的主机名部分使用通配符 '%'。)


查看完整回答
反对 回复 2022-06-15
?
千万里不及你

TA贡献1784条经验 获得超9个赞

试试这个可能会有所帮助:

1)转到mysql终端。2)mysql>使用mysql;3) mysql> select user, host from user;4)在您旁边的用户将主机设置为“%”而不是本地主机

.

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

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


查看完整回答
反对 回复 2022-06-15
  • 2 回答
  • 0 关注
  • 242 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号