我正在尝试从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(我无法识别)。 还是没有运气

执行冲洗特权; 授予所有特权之后

谢谢,但是没有用

你检查过这个答案了吗? 请看看这个stackoverflow.com/a/32288517/227775

@dasrohith我尝试过id。 我有许多root用户(我尝试过的所有IP和通配符)。 我删除了剩下的广告,它们只包含root @ 127.0.0.1,localhost,%通配符和172.17.0.1(异常的IP)。 我还运行了FLUSH PRIVILEGES; 仍然没有任何更改。.当然,它将立即起作用,将删除通配符,并且将不使用root。 我不知道您是否看到了我的编辑,但可以使用Python进行连接

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

我通过关闭Docker服务器解决了这个问题。

我将它用于另一个项目,但我完全忘记了它。 仍然不确定为什么会出现错误,是的,我运行了一个Mysql容器,但是不在本地主机上。

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

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐