Ubuntu从18.04升级到20.04后JDBC驱动连接MySQL报错问题求助
嗨,我之前也碰到过类似的情况,升级Ubuntu版本后MySQL的远程JDBC连接出问题,本地能连但外部客户端不行,给你几个排查和解决的方向,应该能搞定:
检查MySQL的绑定地址设置
Ubuntu升级后,MySQL的配置可能被重置,默认只绑定了127.0.0.1(仅允许本地访问)。你可以打开MySQL的配置文件(通常是/etc/mysql/mysql.conf.d/mysqld.cnf或者/etc/mysql/my.cnf),找到bind-address这一行,把它改成0.0.0.0(允许所有IP访问)或者你客户端机器的具体IP,然后重启MySQL服务:sudo systemctl restart mysql确认MySQL用户的远程访问权限
你的root用户可能只被授权本地访问,需要给对应的用户开放远程连接权限。登录本地MySQL后执行:GRANT ALL PRIVILEGES ON *.* TO '你的用户名'@'客户端机器IP' IDENTIFIED BY '你的密码'; FLUSH PRIVILEGES;如果想允许该用户从任意IP访问,可以把
客户端机器IP换成%。处理MySQL认证插件兼容性问题
Ubuntu 20.04默认安装的MySQL版本是8.0,它默认使用caching_sha2_password认证插件,但旧版本的JDBC驱动不支持这个。你可以把用户的认证方式改成mysql_native_password,执行:ALTER USER '你的用户名'@'客户端机器IP' IDENTIFIED WITH mysql_native_password BY '你的密码'; FLUSH PRIVILEGES;检查防火墙设置
升级后UFW防火墙可能自动开启了,导致3306端口被拦截。你可以开放MySQL的3306端口:sudo ufw allow 3306或者更安全地只允许客户端机器IP访问:
sudo ufw allow from 客户端机器IP to any port 3306验证JDBC驱动版本
如果你的JDBC驱动版本比较旧,可能不兼容MySQL 8.0。建议升级到mysql-connector-java 8.0及以上版本,同时注意连接URL里要加上useSSL=false&serverTimezone=UTC这类参数(根据实际情况调整)。
备注:内容来源于stack exchange,提问作者neutrino

