概述
之前一直都用的MySQL 5,最近换了MySQL 8,出了一大堆莫名其妙的问题,连用JDBC连接个数据库都出了一大堆问题,就顺便总结下,免得自己又忘了。
可能的原因:
这个我还真遇到过,是一开始做学校数据库的实验,没启动服务,非常搞笑了。
一般MySQL安装的时候默认是跟随机器启动的,要是改过的话也可以手动启动:
在Windows上:
手动点击启动即可。
在Linux上,
sudo service mysql start
在macOS上:
#一般是这样
sudo /usr/local/mysql/support-files/mysql.server start
这个其实也没什么好说的,就是写一些配置参数的时候不小心写错了,可以随便找个工具用这些参数连一下数据库,很快就能找到问题。
用JDBC连接MySQL 8的时候,尽量比较新的包,可以在以下网站找下:https://mvnrepository.com/artifact/mysql/mysql-connector-java
这个就比较诡异了,就是数据库连接工具啥的都能正常连接数据库,唯独JDBC或者直接由JDBC驱动的工具连接不上。以上错误也都可以排除,然后一直报链接被拒绝的错误。这时候就可以考虑是否端口被占用或者服务冲突的问题。
我通过查看服务,排查之后发现,在我电脑上有一个xampp目录下的服务在占用端口,导致我们连接不上。同样手动关闭即可:
话说这个xmapp好像是做课程设计的时候弄的,是一个建站集成软件包,真是坑死我了。
常见错误集合
-
java.sql.SQLException: The server time zone value xxx
连接时加上时区
-
java.sql.SQLException: Unable to load authentication plugin 'caching_sha2_password'
这是因为认证插件不同造成的
8版本前是:default_authentication_plugin=mysql_native_password
8版本后是:default_authentication_plugin=caching_sha2_password
解决办法:更新驱动到最新
-
Public Key Retrieval is not allowed
连接时将allowPublicKeyRetrieval设置为true