【问题标题】:Java-Mysql - Access denied for user 'root'@'localhost' (using password: YES) [duplicate]Java-Mysql - 用户'root'@'localhost'的访问被拒绝(使用密码:YES)[重复]
【发布时间】:2016-01-19 11:13:51
【问题描述】:

我正在使用以下代码并收到此错误:

Access denied for user 'root'@'localhost' (using password: YES)
java.lang.NullPointerException

我使用了 stackoverflow 中的几种解决方案。但是问题没有解决!请提供您的解决方案。

只插入一次,但后来我遇到了上述错误。

我的 Java 代码:

package DBConnection;
import java.sql.Connection;
import java.sql.DriverManager;
import com.mysql.jdbc.PreparedStatement;

public class Main {

    public static void main(String[] args) throws Exception {
        insert();
    }

    public static void insert() throws Exception{
        final String var1 = "test1";
        final String var2 = "تست2";
        final String var3 = "test.com";
        try{
            Connection conn = getConnection();
            PreparedStatement inserted = (PreparedStatement) conn.prepareStatement("INSERT INTO wpsjim_target_sites (site_name_en,site_name_fa,site_address) VALUES('"+var1+"','"+var2+"','"+var3+"')");
            inserted.execute();
        }catch(Exception e){
            System.out.println(e);
        }finally{
            System.out.println("Insert Completed!");
        }
    }

    public static Connection getConnection() throws Exception{
        try{
            String driver = "com.mysql.jdbc.Driver";
            String url = "jdbc:mysql://localhost:3306/simjin";
            String username = "root";
            String password = "rootpass";
            Class.forName(driver); 
            Connection conn = DriverManager.getConnection(url,username,password);
            System.out.println("Connected");
            return conn;
        } catch(Exception e){
            System.out.println(e.getMessage());
        } 
        return null;
    }
}

更新: 当我使用e.printStackTrace(System.out); 在控制台上显示以下消息:

    java.sql.SQLException: Access denied for user 'root'@'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(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:404)
    at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:400)
    at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:327)
    at java.sql.DriverManager.getConnection(Unknown Source)
    at java.sql.DriverManager.getConnection(Unknown Source)
    at DBConnection.Main.getConnection(Main.java:34)
    at DBConnection.Main.insert(Main.java:17)
    at DBConnection.Main.main(Main.java:9)
java.lang.NullPointerException

【问题讨论】:

  • 你的数据库用户是使用密码还是不使用密码?
  • 如果您正在努力调试,请不要使用System.out.println(e.getMessage());,它只会打印消息。使用e.printStackTrace(System.out)(如果您确实需要将其打印到System.out;否则,e.printStackTrace() 更容易)。
  • @AndyTurner 我使用e.printStackTrace(System.out) 并更新我的问题。
  • @ArshadAli 是的,我的数据库用户使用密码。 Mysql 密码为rootpass。该密码已成功用于其他应用程序。

标签: java mysql


【解决方案1】:

我认为您的代码中没有任何内容会导致此类型错误,正如您在错误中看到的那样

Access denied for user 'root'@'localhost' (using password: YES)

它表明您的用户或密码有问题,因此如果您使用数据库用户的密码,请再次检查您的用户和密码是否正确。

【讨论】:

  • 密码已成功用于其他应用。
【解决方案2】:

用户名或密码不正确会导致问题。

【讨论】:

  • 密码已成功用于其他应用。
【解决方案3】:

通常默认密码是null。如果您使用的是 root 密码,则意味着您应该这样输入:

String username = "root";
String password = "";//without space

【讨论】:

  • 我更改了mysql默认密码。 Mysql 密码是rootpass。该密码已成功用于其他应用程序。
猜你喜欢
  • 2016-07-11
  • 2013-05-07
  • 2020-03-18
  • 1970-01-01
  • 2017-11-23
相关资源
最近更新 更多