Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/383.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java.sql.SQLException:拒绝用户访问';根'@';192.168.1.3';(使用密码:否)_Java_Mysql_Jdbc_Sqlexception - Fatal编程技术网

java.sql.SQLException:拒绝用户访问';根'@';192.168.1.3';(使用密码:否)

java.sql.SQLException:拒绝用户访问';根'@';192.168.1.3';(使用密码:否),java,mysql,jdbc,sqlexception,Java,Mysql,Jdbc,Sqlexception,我正在尝试连接到我服务器的MySQL,但我一直遇到相同的问题,找不到类似的问题。我的代码片段如下: public class MySqlDatabaseHandler { Connection con = null; Statement st = null; ResultSet rs = null; public MySqlDatabaseHandler(String url, String user, String password){ /*S

我正在尝试连接到我服务器的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)
java.sql.SQLException:拒绝用户'root'@'192.168.1.3'的访问(使用密码:否)
位于com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1074)
在com.mysql.jdbc.MysqlIO.checkErrorPacket上(MysqlIO.java:4120)
在com.mysql.jdbc.MysqlIO.checkErrorPacket上(MysqlIO.java:4052)
在com.mysql.jdbc.MysqlIO.checkErrorPacket上(MysqlIO.java:925)
在com.mysql.jdbc.MysqlIO.proceedHandshakeWithPluggableAuthentication(MysqlIO.java:1704)上
在com.mysql.jdbc.MysqlIO.doHandshake上(MysqlIO.java:1250)
位于com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2465)
位于com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2498)
位于com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2283)
位于com.mysql.jdbc.ConnectionImpl(ConnectionImpl.java:822)
位于com.mysql.jdbc.JDBC4Connection(JDBC4Connection.java:47)
位于sun.reflect.NativeConstructorAccessorImpl.newInstance0(本机方法)
位于sun.reflect.NativeConstructorAccessorImpl.newInstance(未知源)
位于sun.reflect.delegatingConstructor或AccessorImpl.newInstance(未知源)
位于java.lang.reflect.Constructor.newInstance(未知源)
位于com.mysql.jdbc.Util.HandleneInstance(Util.java:411)
位于com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:404)
位于com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:317)
位于java.sql.DriverManager.getConnection(未知源)
位于java.sql.DriverManager.getConnection(未知源)
位于handleServer.includes.classes.Server.MySqlDatabaseHandler.(MySqlDatabaseHandler.java:24)
从外观上看,我相信密码永远不会被发送到服务器,因为“(使用密码:否)”

我甚至尝试将url更改为“jdbc:mysql://192.168.1.80:3306/testdb?user=root&password=rootpass“发现自己也有同样的结果


MySql允许远程连接到测试客户机(192.168.1.3),并且已经用telnet进行了测试,但是在JDBC中遇到了这个问题。有人看到我做错了什么吗?

MySQL权限设置似乎有问题。您可以尝试一下,打开MySQL命令行提示符,运行以下脚本:

grant all privileges on *.* to 'root'@'localhost' identified by 'password' with grant option;
flush privileges;

我认为这是一个有目的的限制,以防止根访问网络。试着看看解决方法。它基本上与@Piegfly的解决方案相同,但有一个域名。

我也有同样的问题,说用户“root”@“localhost”(使用密码:否)的访问被拒绝,但解决方案非常简单。我将其用作密钥-->spring.datasource.data-password,而不是spring.datasource.password。

在我看来,服务器上似乎不存在192.168.1.3上的用户“root”。localhost、127.0.0.1和192.168.1.3上都存在root。所有这些都具有相同的参数,并且127.0.0.1用户正在工作并由phpmyadmin使用。我所关心的是,错误表明我没有提供密码,而我完全没有提供密码。你所犯的错误是,要么用户不存在,要么密码错误,要么用户没有所需的访问权限。这是一个dbadmin问题,而不是编程问题<代码>结果集不应是类成员,也不应是
语句
,通常也不应是
连接
Class.forName()
行自2007年以来就不再需要了。正如我前面提到的,MySQL允许从某些远程连接进行连接。我在localhost、127.0.0.1和192.168.1.3(我正在使用的)上获得了授权。但这能解释为什么MySQL声明我没有给出密码吗?通常,如果没有特权,telnet连接会声明这样的事情,但是,情况并非如此mysql://192.168.1.80:3306/testdb“至”jdbc:mysql://www.hikaritemple.com:3306/testdb“产生了几乎相同的错误,只是ip地址格式不同。这就是你建议我做的吗?