Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/62.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 jdbc mysql无法使用密码进行连接_Java_Mysql_Jdbc - Fatal编程技术网

java jdbc mysql无法使用密码进行连接

java jdbc mysql无法使用密码进行连接,java,mysql,jdbc,Java,Mysql,Jdbc,我在尝试连接到Db时遇到此错误 java.sql.SQLException: Access denied for user 'addressapp'@'localhost' (using password: YES) at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:957) at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3878) at com.mysql.j

我在尝试连接到Db时遇到此错误

java.sql.SQLException: Access denied for user 'addressapp'@'localhost' (using password: YES)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:957)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3878)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3814)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:871)
at com.mysql.jdbc.MysqlIO.proceedHandshakeWithPluggableAuthentication(MysqlIO.java:1694)
at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1215)
at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2255)
at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2286)
at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2085)
at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:795)
at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:44)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:404)
at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:400)
at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:327)
at java.sql.DriverManager.getConnection(DriverManager.java:664)
at java.sql.DriverManager.getConnection(DriverManager.java:247)
at ch.makery.address.mysql.MysqlConnection.test(MysqlConnection.java:29)
at ch.makery.address.MainApp.start(MainApp.java:37)
at com.sun.javafx.application.LauncherImpl.lambda$launchApplication1$162(LauncherImpl.java:863)
at com.sun.javafx.application.PlatformImpl.lambda$runAndWait$175(PlatformImpl.java:326)
at com.sun.javafx.application.PlatformImpl.lambda$null$173(PlatformImpl.java:295)
at java.security.AccessController.doPrivileged(Native Method)
at com.sun.javafx.application.PlatformImpl.lambda$runLater$174(PlatformImpl.java:294)
at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:95)
at com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
at com.sun.glass.ui.win.WinApplication.lambda$null$148(WinApplication.java:191)
at java.lang.Thread.run(Thread.java:745)



 static final String JDBC_DRIVER = "com.mysql.jdbc.Driver";
 static final String DB_URL = "jdbc:mysql://127.0.0.1:3306/test";

 //  Database credentials
 static final String USER = "addressapp";
 static final String PASS = "addressapp";

 public void test() {
 Connection conn = null;
 Statement stmt = null;
 try{
    //STEP 2: Register JDBC driver
    Class.forName("com.mysql.jdbc.Driver");

    //STEP 3: Open a connection
    System.out.println("Connecting to database...");
    conn = DriverManager.getConnection(DB_URL,USER,PASS);
}
    //STEP 6: Clean-up environment
    rs.close();
    stmt.close();
    conn.close();
 }catch(SQLException se){
    //Handle errors for JDBC
    se.printStackTrace();
 }catch(Exception e){
    //Handle errors for Class.forName
    e.printStackTrace();
 }finally{
    //finally block used to close resources
    try{
       if(stmt!=null)
          stmt.close();
    }catch(SQLException se2){
    }// nothing we can do
    try{
       if(conn!=null)
          conn.close();
    }catch(SQLException se){
       se.printStackTrace();
    }//end finally try
 }//end try
java.sql.SQLException:拒绝用户“addressapp”@“localhost”的访问(使用密码:是)
位于com.mysql.jdbc.SQLError.createSQLException(SQLError.java:957)
在com.mysql.jdbc.MysqlIO.checkErrorPacket上(MysqlIO.java:3878)
在com.mysql.jdbc.MysqlIO.checkErrorPacket上(MysqlIO.java:3814)
在com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:871)上
在com.mysql.jdbc.MysqlIO.proceedHandshakeWithPluggableAuthentication(MysqlIO.java:1694)上
位于com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1215)
位于com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2255)
位于com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2286)
位于com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2085)
位于com.mysql.jdbc.ConnectionImpl(ConnectionImpl.java:795)
位于com.mysql.jdbc.JDBC4Connection(JDBC4Connection.java:44)
位于sun.reflect.NativeConstructorAccessorImpl.newInstance0(本机方法)
位于sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
在sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
位于java.lang.reflect.Constructor.newInstance(Constructor.java:423)
位于com.mysql.jdbc.Util.HandleneInstance(Util.java:404)
位于com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:400)
位于com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:327)
位于java.sql.DriverManager.getConnection(DriverManager.java:664)
位于java.sql.DriverManager.getConnection(DriverManager.java:247)
位于ch.makery.address.mysql.MysqlConnection.test(MysqlConnection.java:29)
位于ch.makery.address.MainApp.start(MainApp.java:37)
在com.sun.javafx.application.launchempl.lambda$launchApplication1$162(launchempl.java:863)
位于com.sun.javafx.application.PlatformImpl.lambda$runAndWait$175(PlatformImpl.java:326)
位于com.sun.javafx.application.PlatformImpl.lambda$null$173(PlatformImpl.java:295)
位于java.security.AccessController.doPrivileged(本机方法)
位于com.sun.javafx.application.PlatformImpl.lambda$runLater$174(PlatformImpl.java:294)
位于com.sun.glass.ui.invokelateDispatcher$Future.run(invokelateDispatcher.java:95)
在com.sun.glass.ui.win.WinApplication.\u runLoop(本机方法)
位于com.sun.glass.ui.win.WinApplication.lambda$null$148(WinApplication.java:191)
运行(Thread.java:745)
静态最终字符串JDBC_DRIVER=“com.mysql.JDBC.DRIVER”;
静态最终字符串DB_URL=“jdbc:mysql://127.0.0.1:3306/test";
//数据库凭据
静态最终字符串USER=“addressapp”;
静态最终字符串传递=“addressapp”;
公开无效测试(){
连接conn=null;
语句stmt=null;
试一试{
//步骤2:注册JDBC驱动程序
Class.forName(“com.mysql.jdbc.Driver”);
//步骤3:打开连接
System.out.println(“连接到数据库…”);
conn=DriverManager.getConnection(DB_URL,USER,PASS);
}
//第六步:清理环境
rs.close();
stmt.close();
康涅狄格州关闭();
}捕获(SQLSE异常){
//处理JDBC的错误
se.printStackTrace();
}捕获(例外e){
//处理Class.forName的错误
e、 printStackTrace();
}最后{
//最后是用于关闭资源的块
试一试{
如果(stmt!=null)
stmt.close();
}捕获(SQLException se2){
}//我们无能为力
试一试{
如果(conn!=null)
康涅狄格州关闭();
}捕获(SQLSE异常){
se.printStackTrace();
}//结束最后一次尝试
}//结束尝试
问题是

  • 我可以使用MYSQL workbench连接到db,并使用此用户凭据
  • 如果没有密码,我可以使用JDBC连接到db(例如用户root,或者将用户的addressapp密码更改为空)
  • 使用JDBC使用任何密码时,我无法连接到db
  • 试一试

    问题是我的数据库中有一个“匿名”用户没有密码。删除它后,问题就解决了

    Properties  connProps = new Properties ();
    connProps.put ("user", USER);
    connProps.put ("password", PASS);
    
    Connection  theConnection = DriverManager.getConnection (DB_URL, connProps);