一个最基本的Java连接MySQL8.0.11数据库demo,无法正常连接数据库,报错如下:
java.sql.SQLException: Access denied for user 'root'@'localhost' (using password: YES)
at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:127)
at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:95)
at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:122)
at com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:862)
at com.mysql.cj.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:444)
at com.mysql.cj.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:230)
at com.mysql.cj.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:226)
at java.sql.DriverManager.getConnection(DriverManager.java:664)
at java.sql.DriverManager.getConnection(DriverManager.java:247)
at com.edu.cqu.TestJDBC.main(TestJDBC.java:18)
通过网上检索,一般为如下两个解决方案:
1、没有远程连接MySQL服务器权限。(此例为本地连接,因此应该没有这一问题,但也尝试处理)处理方式如下(本实例为改表法,还有授权法执行一直有问题就没有再尝试应用):
1.1连接数据库执行use mysql
1.2执行select host,user from user where user='root';查询为:
host=localhost,user=root。
1.3执行update user set host='%' where user='root';
执行成功后,再次查询1.2语句,host变为‘%’。
2、密码(或密码编码)问题(可能也不是本次引起此问题的原因),
2.1修改密码方式如下:
use mysql;
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '新密码';
FLUSH PRIVILEGES;
2.2另一种修改密码方式(一样是尝试修改报错)
mysqladmin -u root -p password 新密码
3、禅道mysqlzt服务导致无法连接(严重怀疑,由此引起):
更改上边两操作后仍然连接报错,准备重启mysql服务查看是否是改完配置必须重启。重启时发现mysql80服务下,还有一个mysqlzt服务,顺手停了mysqlzt服务。
此时重新调试代码,问题解决。
将mysqlzt启动,再次调试代码,又出现了上述报错。因此怀疑为禅道的mysqlzt服务引起了该问题。
具体为何会出现此种状况,及如何处理可以两个服务并存使用,待处理。