java.sql.SQLException:用户“root”@“localhost”访问被拒绝(使用密码:YES)(没有可用的解决方案有效)

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

我正在尝试在 Eclipse IDEUbuntu 20.04 操作系统中使用 Java 和 MySQL 创建 JDBC 应用程序。

我在连接到数据库时遇到非常常见的错误,即“java.sql.SQLException:用户'root'@'localhost'访问被拒绝(使用密码:YES)”,并且我已经尝试了堆栈中的所有可能的解决方案溢出了答案、YouTube 视频、文章等,但似乎没有任何效果

错误:

我的java代码:

package jdbcDemo;
import java.sql.*;

public class jdbcConnect {

    public static void main(String[] args) throws SQLException, ClassNotFoundException {
        
        Class.forName("com.mysql.cj.jdbc.Driver");
        
        String url = "jdbc:mysql://localhost:3306/jdbcDemo";
        String user = "root";
        String pswd = "1234";
        
        Connection con = DriverManager.getConnection(url, user, pswd);
        
        if(con == null) {
            System.out.println("Connection not established");
        }
        else {
            System.out.println("Connection established");
        }
    }

}

我的数据库中的用户:

数据库信息:

连接详细信息(mysql工作台截图):

我正在尝试通过用户 “root” 访问数据库,该用户的密码为 “1234”,插件为 “mysql_native_password”。 我正在尝试与具有 student 表的 jdbcDemo 数据库建立连接。

我能够通过 CLI 和 Workbench 使用相同的用户和密码成功访问和操作数据库,但在 JDBC 中一次又一次出现相同的错误。

到目前为止我尝试过的一些解决方案不起作用:

  • 创建具有所有权限的新用户
  • 正在安装mysql服务器
  • 通过mysql工作台创建数据库
  • 更改用户的插件
  • 尝试了所有不同的方式来编写网址
  • 不同类型的连接(tci/ip、本地套接字/管道)

所有解决方案要么过时、不起作用,要么特定于 Windows 操作系统。

请建议一些解决方案来解决 Ubuntu 20.04 中的此问题或执行此任务的不同替代方案(远程数据库等)

提前致谢!

java mysql eclipse ubuntu jdbc
6个回答
1
投票

在application.properties中添加以下语句:

server.port = 8034
如果您正在运行其他可能正在使用端口 8080 的应用程序。 这帮助我解决了这个问题,我花了几个小时才找到这个解决方案。 希望它对某人有帮助。


0
投票

尝试这样做

GRANT ALL PRIVILEGES ON *.* TO 'username'@'localhost';


GRANT ALL PRIVILEGES ON *.* TO 'username'@'127.0.0.1';

0
投票

执行这条sql语句:

update mysql.user set host = '%' where user = 'root' and host = 'localhost';
flush privileges;

然后再试一次。它在类似的情况下对我有用。祝你好运!


0
投票

那是密码的问题,尝试更改密码的符号。

我在引入像“€”这样的符号时遇到错误


0
投票

如果您尝试连接到容器化数据库,您可能已经在端口 3306 上运行了本地 SQL 服务器 - 特别是如果您刚刚在本地安装了

mysql

您可以通过运行来检查:

sudo service mysql status # Linux
brew services info mysql  # Mac

如果是这种情况,您的 Spring 应用程序可能会无形地连接到您计算机上的默认

mysql
实例,而不是您的容器化数据库。

要停止默认的

mysql
实例,

sudo service mysql stop  # Linux
brew services stop mysql # Mac

要禁用自动启动,

sudo systemctl disable mysql                                      # Linux
launchctl unload -w ~/Library/LaunchAgents/com.mysql.mysqld.plist # Mac

您可以通过

telnet
-ing 来确认端口 3306 上没有其他任何东西正在运行:

telnet localhost 3306

重新启动 Docker 容器并尝试连接。


0
投票

从这里为开发人员安装 mysql-server:https://dev.mysql.com/downloads/file/?id=526407 并根据您的属性(用户名和密码)进行配置

© www.soinside.com 2019 - 2024. All rights reserved.