【问题标题】:java.sql.SQLException: Access denied for user 'root'@'172.17.0.1' (using password: YES)java.sql.SQLException:用户'root'@'172.17.0.1'的访问被拒绝(使用密码:是)
【发布时间】:2017-09-26 04:10:59
【问题描述】:

我正在尝试从 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 代码写在同一张表上。

【问题讨论】:

  • 你能检查一下这个解决方案吗stackoverflow.com/a/11922393/227775
  • @dasrohith 我已经尝试过了,但没有解决我的问题
  • 你试过用ip还是locahost?
  • @dasrohith 是的,我尝试了 localhost、127.0.0.1、我的本地 IP 和异常显示的 IP(我不认识)。还是没有运气
  • 执行刷新权限;在授予所有特权之后

标签: java mysql


【解决方案1】:

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

【讨论】:

  • 很高兴知道它有效。但仍在思考如何解决您的问题。 :)
【解决方案2】:

如果 Docker 自己在连接到他自己的云帐户时遇到问题(Feuerwall、登录问题等),则在本地 Docker 中连接数据库时会出现同样的错误。

【讨论】:

    【解决方案3】:

    想法:

    1. 如果您检查 root 权限,您会看到,此用户已绑定到 localhost。
    2. 我有一个查询用户可以在没有主机 (%) 的情况下执行查询

    所以要解决这个问题: 1.给root更多的访问权限 2.使用另一个用户访问(不是root) 3.重要:使用最新的mysql jar驱动包。

    【讨论】:

      【解决方案4】:

      我也遇到过同样的问题。我找到了解决这个问题的方法。

      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 终端上使用上述命令获取此错误。

      【讨论】:

        猜你喜欢
        • 2012-08-08
        • 2016-08-21
        • 1970-01-01
        • 2014-09-10
        • 2020-03-18
        • 2012-08-11
        • 1970-01-01
        相关资源
        最近更新 更多