我一直在计算机上使用java(让我们称之为PC1)连接到服务器上的数据库,直到最近它才能正常工作。
通过工作,我的意思是我可以使用PC1上的java连接到服务器,并使用select语句从表中访问我需要的信息。
唯一的变化是PC1和服务器上的IP地址。 更改IP地址后,我更新了mysql中的授权表,然而,我收到以下错误:
java.sql.SQLException: Access denied for user 'robot'@'aa-PC' (using password: YES)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:946)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2985)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:885)
at com.mysql.jdbc.MysqlIO.secureAuth411(MysqlIO.java:3421)
at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1247)
at com.mysql.jdbc.Connection.createNewIO(Connection.java:2775)
at com.mysql.jdbc.Connection.<init>(Connection.java:1555)
at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:285)
at java.sql.DriverManager.getConnection(DriverManager.java:664)
at java.sql.DriverManager.getConnection(DriverManager.java:247)
at WriteToMySql.connection1(WriteToMySql.java:26)
at WriteToMySql.main(WriteToMySql.java:259)
然而,奇怪的是,我能够使用mySQL工作台连接到服务器的数据库并访问它们上的所有数据。
这里是java代码:
String host = "jdbc:mysql://PC1IPAdress:3306/users";
String user= "robot";
String password="mypassword";
public void connect()
{
try {
Class.forName("com.mysql.jdbc.Driver");
System.out.println("worked"); //this gets printed
connect = DriverManager.getConnection(host, user, password);
System.out.println("works"); // this does not get printed due to error
stmt = connect.createStatement();
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
}
注意:&#34;用户&#34;是数据库的名称
任何帮助将不胜感激。 谢谢。
编辑: 出于测试目的,我试图关闭防火墙,但它没有帮助。
答案 0 :(得分:1)
我认为代码示例中可能存在错误 - 当您提到PC1应该在帖子前面连接到服务器时,它会连接到PC1IPAddress。只是想在我们继续之前确定这是一个错字,否则PC1会连接到自己。
如果您具有对服务器的管理访问权限,请以root身份连接到MySQL并使用此查询显示已配置的用户并确保主机字段正确:SELECT user, host FROM mysql.user WHERE user='robot';
如果以上检查,我建议查看Windows用户身份验证。 MySQL返回Windows计算机名称('aa-PC')而不是其IP地址这一事实似乎表明它可能正在尝试使用Windows域凭据进行身份验证:http://dev.mysql.com/doc/refman/5.5/en/windows-authentication-plugin.html
答案 1 :(得分:0)
如果更改客户端(PC1)的IP地址,请确保在向用户“robot”授予新权限时更新主机字段。检查表“db”,“user”和“host”。