admin 管理员组

文章数量: 1086866

JDBC :java.sql.SQLException: Access denied for user ‘root‘@‘localhost‘ (using password: YES) 数据库登录正常

项目场景:

JDBC连接mysql异常,数据库可正常登录!(这里是命令窗口执行结果,IDEA运行也是如此)


问题描述

 今天遇到一个令人发指的问题,早上JDBC连接很正常,晚上突然连接不上了!但是数据库可以正常登录,可是用JDBC连接数据库MySQL的时候却显示:

java.sql.SQLException: Access denied for user 'root'@'localhost' (using password: YES)at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:129)at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:122)at com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:828)at com.mysql.cj.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:448)at com.mysql.cj.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:241)at com.mysql.cj.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:198)at java.sql.DriverManager.getConnection(DriverManager.java:664)at java.sql.DriverManager.getConnection(DriverManager.java:247)at JDBCText01.main(JDBCText01.java:31)
 ps:这个异常就是指连接不到数据库

原因分析:

1、检查用户名user、密码password、统一资源定位符url是否正确,是否有空格之类的错误,或是是否正确

2、是否在配置文件中有格式错误

3、检查是否端口被占用【本人就是这个问题】,一般默认端口号为3306

String url = "jdbc:mysql://localhost:3306/users";//最后是数据库名String user = "root";String password = "******";

解决方案:

这里只提供关于端口被占用的解决方案!

通过一系列网络其他方法一一尝试,包括不断重启,查看环境变量或者导入,都无法解决问题。终于我们在服务中发现了问题,我的MySQL服务正常启动,但与此同时,下面还有一个mysqlzt也正在运行。

        (1) windows +R     

        (2) 输入services.msc 或者 菜单栏直接搜索:服务

 

 

 查看属性可以知道,这是我之前下载的xmpp文件中自带的mysql,其端口号也为3306,这就是我们无法连接数据库的罪魁祸首!

 

 

 

因此我们将这个服务停止!

 (3)右键停止服务,重新尝试运行代码

 

最终数据库连接成功!就这一个小问题搞了我一晚上,真是快被气死了。

 

本文标签: JDBC javasqlSQLException Access denied for user rootlocalhost (using password YES) 数据库登录正常