【问题标题】:Exception in thread "main" java.sql.SQLException: Access denied for user ''@'localhost' (using password: NO)线程“main”java.sql.SQLException 中的异常:用户 ''@'localhost' 的访问被拒绝(使用密码:否)
【发布时间】:2020-04-01 04:08:16
【问题描述】:
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:199)
    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)

无论我做什么,我都会收到此错误。我使用 MySQL Workbench,我已经更改了 root 用户的密码,我已经授予用户 root 的所有权限,我尝试断开连接并再次连接到数据库。没什么,不管我做什么。你能帮我解决这个问题吗?我不知道还能做什么。密码和用户名都正确。

Java 代码:

package Restaurant;

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


public class MainApp {
    public void main(String[] args) throws SQLException
    {

        String url="jdbc:mysql://localhost:3306/new_schema";
        Statement sql;

        ResultSet rs;
        Connection con=DriverManager.getConnection(url, "root", "root");

        sql=(Statement)con.createStatement();
        rs=sql.executeQuery("select * from restaurant");
        while(rs.next())
        {
            System.out.println("Nume: "+rs.getString("nume")+", Specific: "+rs.getString("specificul")+", Zona: "+rs.getString("zona"));
        }


        rs.close();
        sql.close();
        con.close();
    }

}

Workbench

【问题讨论】:

  • 您是否为“localhost”(127.0.0.1)或其他主机名设置了 root 帐户/密码?
  • 对于它的价值,异常消息是说没有提供密码,并且用户名是空字符串。
  • @StephenC 是的,我为本地主机设置了它,我已经在管理用户和权限的帖子中添加了一个 SS
  • 请不要将代码和错误信息作为截图发布。
  • DriverManager.getConnection(url, "root", "root"); 似乎与 Access denied for user ''@'localhost' (using password: NO) 不匹配。你确定是这段代码产生了这个异常吗?

标签: java mysql


【解决方案1】:

您的 Eclipse 正在运行“com.mysql.cj.jdbc.admin.TimezoneDump”类(其中还包含一个 main 方法),而不是您的 MainApp 类。

试试这个操作:

Right click on MainApp.java -> Run As -> Java Application

【讨论】:

  • 我尝试这样做,但我没有作为 Java 应用程序运行的选项,我只有在服务器中运行。
  • 好的,我发现了问题。您的主要方法不正确。 -> public static void main(String[] args)
  • 哇,非常感谢!我什至没有注意到!现在可以了。
猜你喜欢
  • 2012-08-11
  • 1970-01-01
  • 2021-08-05
  • 2014-09-10
  • 2018-04-24
  • 1970-01-01
  • 2020-03-18
  • 2012-08-08
  • 2020-09-02
相关资源
最近更新 更多