MySQL在java中拒绝访问,授予了工作台访问权限

时间:2014-08-13 16:13:24

标签: java mysql

我一直在计算机上使用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;是数据库的名称

任何帮助将不胜感激。 谢谢。

编辑: 出于测试目的,我试图关闭防火墙,但它没有帮助。

2 个答案:

答案 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”。