Exception in thread "main" java.sql.SQLException: Access denied for user 'root'@'localhost'

    xiaoxiao2021-12-14  55

    import java.io.IOException; import java.io.InputStream; import java.sql.Connection;   import java.sql.DriverManager;   import java.sql.PreparedStatement; import java.sql.ResultSet;   import java.sql.SQLException;   import java.sql.Statement;   import java.util.Properties;                       public class BasicConnectionDemo           {                          /**               * @param args               */               public static void main(String[] args)throws Exception               {               String driver;             String url ;                   String username ;                   String password ;                   String sql = "select * from kk";                                   InputStream in = BasicConnectionDemo.class.getClassLoader().getResourceAsStream("db.properties");                   Properties pro = new Properties();                   try {                       pro.load(in);                   } catch (IOException e) {                                             e.printStackTrace();                   }                  driver = pro.getProperty("driver");                   url = pro.getProperty("url");                   username = "root";                   password = "111111";                                  System.out.println(password);                 easyConnect(url, username, password, sql);               }               public static void easyConnect(String url,String user,String password,String sql)                       throws ClassNotFoundException, SQLException               {               try{                    Class<?> aa= Class.forName("com.mysql.jdbc.Driver");                     System.out.println(aa);                     }                     catch (ClassNotFoundException e) {                                                   e.printStackTrace();                     }                 Connection conn = DriverManager.getConnection(url,user,password);                   Statement stat = conn.createStatement();                   ResultSet rs = stat.executeQuery(sql);                   while(rs.next())                   {                       System.out.print(rs.getObject("id") + " ");                       System.out.print(rs.getObject("name") + " ");                       System.out.print(rs.getObject("age") + "\n");                   }                   rs.close();                   stat.close();                   conn.close();               }  

            }

    改为   password = "727272";为                   password=pro.getProperty("password");  后异常,Exception in thread "main" java.sql.SQLException: Access denied for user 'root'@'localhost' (using password: YES) at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:964) at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3970) at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3906) at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:873) at com.mysql.jdbc.MysqlIO.secureAuth411(MysqlIO.java:4417) at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1278) at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2253) at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2284) at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2083) at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:806) 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:425) at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:410) at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:328) at java.sql.DriverManager.getConnection(Unknown Source) at java.sql.DriverManager.getConnection(Unknown Source) at BasicConnectionDemo.easyConnect(BasicConnectionDemo.java:58) at BasicConnectionDemo.main(BasicConnectionDemo.java:42)

    把Class.forName("com.mysql.jdbc.Driver"); 改为Class.forName( driver);

    Exception in thread "main" java.lang.ClassNotFoundException: com.mysql.jdbc.Driver   at java.net.URLClassLoader$1.run(Unknown Source) at java.net.URLClassLoader$1.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at java.lang.Class.forName0(Native Method) at java.lang.Class.forName(Unknown Source) at BasicConnectionDemo.easyConnect(BasicConnectionDemo.java:48) at BasicConnectionDemo.main(BasicConnectionDemo.java:42)

    把username="root"; 改为 username = pro.getProperty("username "); 异常: Exception in thread "main" java.sql.SQLException: Access denied for user ''@'localhost' (using password: YES) at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:964) at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3970) at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3906) at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:873) at com.mysql.jdbc.MysqlIO.secureAuth411(MysqlIO.java:4417) at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1278) at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2253) at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2284) at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2083) at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:806) 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:425) at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:410) at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:328) at java.sql.DriverManager.getConnection(Unknown Source) at java.sql.DriverManager.getConnection(Unknown Source) at BasicConnectionDemo.easyConnect(BasicConnectionDemo.java:58) at BasicConnectionDemo.main(BasicConnectionDemo.java:42) Exception in thread "main" java.sql.SQLException: Access denied for user 'root'@'localhost' (using password: YES)

    Exception in thread "main" java.lang.ClassNotFoundException: com.mysql.jdbc.Driver  分别是无法登陆和找不到驱动。

    可是不用properties是可以登陆的。

    于是我又测试了一下从db.properties读出来的是什么东西

    System.out.println("driver:"+driver);                 System.out.println("password:"+password);                 System.out.println("username:"+username);                 System.out.println("url:"+url);                                    System.out.println("driver的类型:"+driver.getClass());                 System.out.println("password的类型:"+password.getClass());                 System.out.println("username的类型:"+username.getClass());                 System.out.println("url的类型:"+url.getClass()); 结果显示的都是字符串类型,而且值又和直接对字符串赋的值一样的。

    但为什么还是无法登陆了?。后来抱着试一试的态度

    我又发现db.properties的每一行都有空格,删掉,就成功了

    driver=com.mysql.jdbc.Driver url=jdbc:mysql://localhost:3306/bookstore username=root password=727272

    转载请注明原文地址: https://ju.6miu.com/read-969230.html

    最新回复(0)