首页 » tomcat » 正文

记一次由MySQL引起的java站点故障

名称版本
Ubuntu20.04
MySQL8.0.21
tomcat9.0.31
问题描述:MySQL和tomcat9均采用的是apt包管理器在线安装,安装完成之后将jpress上传到站点根目录,部署的时候发现创建的jpress数据库用户无法连接到数据库,而通过命令行方式却能正常访问。尝试用root用户安装却安装成功。然后发生了重启服务器或者偶尔重启服务就再也访问不了站点的情况,之后站点就再也无法访问了。
#查看数据库编码
mysql> select host,user,plugin from mysql.user;
+-----------+------------------+-----------------------+
| host      | user             | plugin                |
+-----------+------------------+-----------------------+
| localhost | bbs              | caching_sha2_password |
| localhost | debian-sys-maint | caching_sha2_password |
| localhost | jpress           | caching_sha2_password |
| localhost | mysql.infoschema | caching_sha2_password |
| localhost | mysql.session    | caching_sha2_password |
| localhost | mysql.sys        | caching_sha2_password |
| localhost | root             | mysql_native_password |
+-----------+------------------+-----------------------+
7 rows in set (0.00 sec)

#发现root用户的加密方式是mysql_native_password,而其他用户的加密方式为caching_sha2_password,故推测是由于数据库用户的加密方式原因导致无法连接,而MySQL8.0之前默认采用的是mysql_native_password的加密方式
#尝试把加密方式从caching_sha2_password更改为mysql_native_password,发现更改后故障解决
#更改方式
ALTER USER jpress@localhost IDENTIFIED WITH mysql_native_password BY 'yourpassword';
FLUSH PRIVILEGES;
不知道因为什么原因,虽然root用户是mysql_native_password的加密方式,但是重启服务器之后还是会出现上述故障,而采用新建的账户重新部署jpress站点之后故障就不复存在了。并且若采用的是去tomcat官网下载tomcat二进制包来进行站点部署的话,故障频率会降低,但是依旧会在重启服务器后出现站点无法访问的情况,查看日志也是提示的是数据库连接失败。但是经过测试,解决方法就是将加密方式从caching_sha2_password更改为mysql_native_password。或者自行修改站点源码或等待更新或将MySQL更改成MySQL 5.7版本。

发表评论