我正在尝试连接到我的服务器的MySQL,但是我一直遇到同样的问题并且找不到类似的问题。我的代码段如下:
public class MySqlDatabaseHandler {
Connection con = null;
Statement st = null;
ResultSet rs = null;
public MySqlDatabaseHandler(String url, String user, String password){
/*String url = "jdbc:mysql://192.168.1.80:3306/testdb";
String user = "root";
String password = "rootpass";*/
try {
Class.forName("com.mysql.jdbc.Driver");
con = DriverManager.getConnection(url, user, password);
st = con.createStatement();
}
catch (Exception e){
e.printStackTrace();
}
}
}
我收到的结果:
java.sql.SQLException: Access denied for user 'root'@'192.168.1.3' (using password: NO)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1074)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4120)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4052)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:925)
at com.mysql.jdbc.MysqlIO.proceedHandshakeWithPluggableAuthentication(MysqlIO.java:1704)
at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1250)
at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2465)
at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2498)
at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2283)
at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:822)
at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:47)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
at java.lang.reflect.Constructor.newInstance(Unknown Source)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:404)
at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:317)
at java.sql.DriverManager.getConnection(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
at handleServer.includes.classes.Server.MySqlDatabaseHandler.<init>(MySqlDatabaseHandler.java:24)
从外观上看,我认为密码永远不会被发送到服务器,因为“(使用密码:NO)”。
我甚至试图将网址更改为“jdbc:mysql://192.168.1.80:3306 / testdb?user = root&amp; password = rootpass”,并发现自己的结果相同。
MySql允许远程连接到测试客户端(192.168.1.3)并且已经使用telnet进行了测试,但是在JDBC中遇到了这个问题。有谁看到我做错了什么?
答案 0 :(得分:0)
MySQL权限设置似乎有问题。你可以尝试这个,打开MySQL命令行提示符,运行以下脚本:
grant all privileges on *.* to 'root'@'localhost' identified by 'password' with grant option;
flush privileges;
答案 1 :(得分:0)
我认为这是一个有目的的限制,以防止网络上的root访问。请尝试查看this Q&A以获取解决方法。它与@ pigletfly的解决方案基本相同,但具有域名。
答案 2 :(得分:0)
我也遇到了同样的问题,说用户“root”@“localhost”的访问被拒绝(使用密码:否),但解决方案很简单。我使用它作为密钥--> spring.datasource.data-password 而不是 spring.datasource.password。