我已经检查了其他 Stack Overflow 和网络链接:
MySQL 位于 Linux 服务器上
Linux uslx600 2.6.32-358.14.1.el6.x86_64 #1 SMP Mon
说它的IP是1.2.3.4
我可以使用 MySQL Workbench 从笔记本电脑连接到它。由于堆栈溢出政策,我无法附加图像,但对话框如下:
Connection Method: tcp/ip
Hostname: <host of the server, so e.g. 1.2.3.4>
Port: 3306 <This is same port as mentioned below for JDBC connection>
username: bugs
Default Schema: bugs
在那个 mysql 中我运行了 [select user(), current_user()]
,我明白
- 用户() =
bugs@<my laptop IP>
- 当前用户() =
bugs@%
现在我尝试从 MySQL 数据库所在的 Linux 服务器进行连接。
以下作品,用户本身就是用户,即没有“@%”或其他内容:
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/bugs", user, pasword);
以下也有效:
conn = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/bugs", user, pasword);
但如果我给出盒子的 IP 地址或主机名,它就不起作用。我真正努力的方向是从另一台 Linux 服务器访问它,这可能由于同样的问题而无法工作。
失败时的错误信息是:
Access Denied for user 'bugs'@'<hostname of the server>' (using password=YES)
如果服务器上存在一些访问问题,MySQL Workbench 不应该也有同样的问题吗?
和current_user()
说bug@%
那么这是否意味着用户设置正确?
我也尝试将用户更改为“user”@'%'等,但在所有这些情况下错误消息始终是:
'bugs'@'%'@'<hostname>'
最佳答案
确保您已向所有主机授予所有权限。
检查您的 my.cnf
文件,并注释掉 bind-address
(如果它仅指向 127.0.0.1)。
关于java - JDBC 连接错误 mysql 访问被拒绝,用户 <user>@<host>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26262017/