对用户<user> @ <host> </host> </user>拒绝访问mysql的JDBC连接错误

时间:2014-10-08 16:39:22

标签: java mysql jdbc

我已经检查了其他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从笔记本电脑连接到它。由于Stack Overflow策略,我无法附加图像,但对话框如下:

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  

在我运行[select user(), current_user()]的mysql中,我得到了

  • user()= bugs@<my laptop IP>
  • current_user()= 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>'

2 个答案:

答案 0 :(得分:0)

确保您已授予所有主机所有权限。

检查您的my.cnf文件并注明bind-address,如果它仅指向127.0.0.1。

MySQL root access from all hosts

答案 1 :(得分:0)

错误表明它无法使用给定的密码连接到服务器。可能是您的密码不正确,或者如果它有特殊字符,您必须正确地转义该字符串。

另一方面,用户错误无法从指定主机连接到服务器。尝试从您连接的主机向用户提供GRANTS,然后检查您是否能够连接到MySQL。

GRANT ALL PRIVILEGES ON *.* TO 'bugs'@'%' IDENTIFIED BY 'password';

或评论my.cnf文件中的行

#bind-address = 127.0.0.1 

重启mysql服务。