Tomcat启动成功但数据库SSL连接失败求助(首次使用)
解决Tomcat启动正常但数据库SSL连接错误(JDK 1.8 + MacBook)
检查JDBC URL的SSL参数
先确认你的URL配置里的SSL相关参数是否合理:- 如果数据库没启用SSL,把
useSSL=true改成useSSL=false,比如调整后的URL:jdbc:mysql://localhost:3306/your_db?useSSL=false - 要是数据库启用了SSL但JDK 1.8默认协议不兼容,给URL加上
enabledTLSProtocols=TLSv1.2,比如:jdbc:mysql://localhost:3306/your_db?useSSL=true&enabledTLSProtocols=TLSv1.2
- 如果数据库没启用SSL,把
导入数据库SSL证书到JDK信任库
如果数据库确实要求SSL连接,得把证书导入JDK 1.8的系统信任库:- MacBook上JDK 1.8的cacerts路径一般是
/Library/Java/JavaVirtualMachines/jdk1.8.xxx.jdk/Contents/Home/jre/lib/security/cacerts(替换xxx为你的JDK版本号) - 用keytool命令导入证书:
keytool -import -alias mysql_ssl -file /path/to/your/cert.pem -keystore /Library/Java/JavaVirtualMachines/jdk1.8.xxx.jdk/Contents/Home/jre/lib/security/cacerts - 输入默认密码
changeit,然后确认导入即可。
- MacBook上JDK 1.8的cacerts路径一般是
验证数据库端SSL配置
登录数据库执行命令,确认SSL是否正常开启:SHOW VARIABLES LIKE '%ssl%';看
have_ssl的值,如果是YES说明SSL已启用;如果是DISABLED,得修改数据库配置文件开启SSL功能。要是数据库要求双向认证,还要在JDBC URL里添加客户端证书相关参数,比如clientCertificateKeyStoreUrl和clientCertificateKeyStorePassword。排查Mac网络与防火墙
- 用
nc -zv 你的数据库地址 端口号测试连通性,比如nc -zv localhost 3306,确保网络能通 - 检查Mac自带防火墙是否阻止了Tomcat访问数据库端口,必要时添加允许规则
- 用
内容的提问来源于stack exchange,提问作者Azzim Farid
相关产品推荐
相关产品推荐

