java.sql.SQLException:用户'root'@'172.17.0.1'拒绝访问(使用密码:YES)

时间:2017-04-28 06:30:32

标签: java mysql

我正在尝试从Java写入一个mysql数据库,但是我收到了这个错误:

java.sql.SQLException: Access denied for user 'root'@'172.17.0.1' (using password: YES)

我正在连接到本地的mysql实例,说实话我不知道什么是172.17.0.1 ip。

我写的小代码:

public static void writeToDB(String value, String unit) throws ClassNotFoundException, SQLException, SQLException
{

    // create a mysql database connection
    String myDriver = "com.mysql.cj.jdbc.Driver";
    String myUrl = "jdbc:mysql://localhost:3306/MyDB";
    Class.forName(myDriver);

    Connection conn = null;

    conn = DriverManager.getConnection(myUrl, "root", "MyPass");


    // the mysql insert statement
    String query = " insert into data (unit, value)"
            + " values (?, ?)";

    // create the mysql insert preparedstatement
    PreparedStatement preparedStmt = null;
    preparedStmt = conn.prepareStatement(query);
    preparedStmt.setString (1, unit);
    preparedStmt.setString (2, value);

    // execute the preparedstatement
    preparedStmt.execute();
    conn.close();

}

我跑了

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'MyPass' WITH GRANT OPTION;

但没有改变。

我的my.cnf已全部注释掉了。 我的本地IP是192.168.1.46。我试图在myUrl变量上使用这个ip和127.0.0.1而不是localhost但没有改变。

我重启了mysql服务器,eclipse和pc没有成功。

编辑:其他信息 我停止了服务器并运行了代码。我得到完全相同的例外。我猜不知道我根本无法到达服务器。

我可以在我的Python脚本中使用“localhost”。它与java代码写在同一个表中。

4 个答案:

答案 0 :(得分:1)

我一直面临着同样的问题。我找到了解决此问题的方法。

CREATE USER 'root'@'172.17.0.1' IDENTIFIED BY 'root';


GRANT ALL PRIVILEGES ON *.* TO 'root'@'172.23.0.1' WITH GRANT OPTION;


docker exec -it a5572eb07b8fe8e216d9addc63c1b8f50473638393c39d79e44e2ca7ffd6781e mysql -uroot -p (to get the docker-mysql terminal)[![This picture is for docker-mysql CLI][1]][1]
flush privileges;

为您使用的 IP 地址创建用户,在 docker-mysql 终端上使用上述命令获取此错误。

答案 1 :(得分:0)

我通过关闭Docker服务器解决了这个问题。 我正在将它用于另一个项目,我完全忘了它。仍然不确定为什么我得到错误,我有一个运行的Mysql容器,但不是在localhost。

答案 2 :(得分:0)

如果Docker自身无法使用自己的云帐户连接(Feuerwall,登录问题等),则在本地Docker中与DB连接时也会出现相同的错误。

答案 3 :(得分:0)

想法:

  1. 如果您检查root用户特权,您将看到该用户已绑定到本地主机。
  2. 我有一个查询用户来执行没有主机(%)的查询

因此要解决此问题: 1.给予root更多访问权限 2.使用其他用户进行访问(不是root) 3.重要:请使用最新的mysql jar驱动程序包。