在Eclipse中,对用户'@'localhost'的访问被拒绝(使用密码:NO),而不是'root'@'localhost'

问题描述 投票:0回答:1

我正在使用SceneBuilder和Eclipse创建一个Java项目;我需要连接到使用MySQL创建的本地数据库,但是在Eclipse中运行Java代码后,出现以下错误:

Exception in thread "main" java.sql.SQLException: Access denied for user ''@'localhost' (using password: NO)
at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:129)
at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:97)
at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:122)
at com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:836)
at com.mysql.cj.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:456)
at com.mysql.cj.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:246)
at com.mysql.cj.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:197)
at java.sql.DriverManager.getConnection(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
at com.mysql.cj.jdbc.admin.TimezoneDump.main(TimezoneDump.java:70)

而不是登录凭据错误的'root'@'localhost' (using password: NO),现在我有''@'localhost' (using password: NO)。使用MySQL工作台和命令提示符,我可以使用“ root” /“ root”正确访问,并在数据库上启动查询。在另一台笔记本电脑或我的家用PC上运行相同的Eclipseproject,我可以毫无错误地运行它。因此问题不在于代码,而在于我当前笔记本电脑的某些设置。

我已经尝试过:

  • 卸载并重新安装Eclipse。
  • 卸载并重新安装mySQL产品:Workbench,Server,J Connector。
  • 切换Eclipse工作区。
  • 从Windows防火墙打开3306端口。

这是我尝试连接到数据库的代码的一部分。

package model;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;



public class UserDAO {

    private static String USER = "root";
    private static String PASS = "root";
    private static String DB_URL = "jdbc:mysql://127.0.0.1:3306/beecological?useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC";
    private static String DRIVER_CLASS_NAME = "com.mysql.cj.jdbc.Driver";


    public static boolean checkUsername(String username) {
        Statement stmt = null;
        Connection conn = null;
        int res = 1;

        try {

            Class.forName(DRIVER_CLASS_NAME);

            conn = DriverManager.getConnection(DB_URL, USER, PASS);

            stmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
                    ResultSet.CONCUR_READ_ONLY);
            res = Queries.verifyUsernameAvailable(stmt, username);

            stmt.close();
            conn.close();
        }catch (Exception e) {
            e.printStackTrace();
        }

        if(res == 1) {
            return false;
        }
        return true;
    }

    public static void saveUser(User instance) {
        Statement stmt = null;
        Connection conn = null;

        try {

            Class.forName(DRIVER_CLASS_NAME);

            conn = DriverManager.getConnection(DB_URL, USER, PASS);

            stmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
                    ResultSet.CONCUR_READ_ONLY);
            Queries.insertUser(stmt, instance);

            stmt.close();
            conn.close();
        }catch (Exception e) {
            e.printStackTrace();
        }
    }

    public static boolean verifyLogin(User instance) {
        Statement stmt = null;
        Connection conn = null;
        int res = 0;

        try {
            //caricamento driver mysql
            Class.forName(DRIVER_CLASS_NAME);

            conn = DriverManager.getConnection(DB_URL, USER, PASS);

            stmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
                    ResultSet.CONCUR_READ_ONLY);
            res = Queries.verifyUserRegistered(stmt, instance);

            stmt.close();
            conn.close();
        }catch (Exception e) {
            e.printStackTrace();
        }

        if (res == 0) {
            return false;   //utente immesso non esiste
        }
        return true;
    }
}
java mysql sql eclipse jconnect
1个回答
0
投票

解决方案>>

问题不是关于MySQL登录凭据,而是在Eclipse配置上。

在我的文件夹项目中,.classpath.project文件已损坏。实际上,将主类设置为myproject>right click>Run As..>Run Configurations,而不是我的com.mysql.cj.jdbc.admin.TimezoneDump.main类。试图在那里更改主类文件不起作用,因为对于Eclipse,mainApp不存在。

所以这就是我为解决错误所做的事情:

  1. 从Eclipse删除项目(不在磁盘上)
  2. 关闭Eclipse
  3. 转到项目文件夹并删除mainApp.classpath文件
  4. 打开日食,转到.project并选择项目目录
  5. 右键单击项目>运行方式>运行配置并设置正确的主类
© www.soinside.com 2019 - 2024. All rights reserved.