项目场景:
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)右键停止服务,重新尝试运行代码
最终数据库连接成功!就这一个小问题搞了我一晚上,真是快被气死了。