我正在尝试在Eclipse IDE和Ubuntu 20.04OS中使用Java和MySQL创建JDBC应用程序。
我在连接到数据库时遇到一个非常常见的错误:“java.sql.SQLException:拒绝访问用户‘根’@‘本地主机’(使用密码: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工作台截图):
我正在尝试通过密码为**“1234”、插件为“MySQL_Native_Password”的用户“根用户”访问数据库。我正在尝试连接有学生表的jdbcDemo**数据库。
我可以通过CLI和工作台使用相同的用户和密码成功访问和操作数据库,但在JDBC中一次又一次地遇到相同的错误。
我到目前为止一直尝试的一些解决方案都不起作用:
- 创建具有所有权限的新用户
- 正在重新安装MySQL服务器
- 通过MySQL工作台创建数据库
- 更换用户插件
- 尝试了所有不同的方法来写入URL
- 不同类型的连接(TCI/IP、本地套接字/管道)
所有的解决方案要么是过时的、不起作用的,要么是专门针对Windows操作系统的。
请在Ubuntu 20.04中建议一些解决方案来解决这个问题,或者建议不同的替代方案来完成这个任务(远程数据库等)。
提前感谢!
3条答案
按热度按时间3ks5zfa01#
试着这样做
ifmq2ha22#
执行以下SQL语句:
然后再试一次。在类似的情况下,这对我来说很管用。祝好运!
wsxa1bj13#
如果您有其他正在运行的应用程序可能正在使用端口8080,请在Application.Properties中添加以下语句:
server.port = 8034
。这帮助我解决了这个问题,我花了几个小时才找到这个解决方案。希望它能帮助一些人。