问题描述
在安装或升级Jira到最新的版本时,出现MySql 数据库无法连接的情况,日志报错如下
JIRA-Bootstrap ERROR [c.a.config.bootstrap.DefaultAtlassianBootstrapManager] Could not successfully test your d
atabase:
com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure
The last packet successfully received from the server was 81 milliseconds ago. The last packet sent successfully to the server was 76 milliseconds ago.
...
Caused by: javax.net.ssl.SSLHandshakeException: No appropriate protocol (protocol is disabled or cipher suites are inappropriate)
at sun.security.ssl.HandshakeContext.<init>(HandshakeContext.java:171)
at sun.security.ssl.ClientHandshakeContext.<init>(ClientHandshakeContext.java:98)
at sun.security.ssl.TransportContext.kickstart(TransportContext.java:220)
at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:428)
at com.mysql.jdbc.ExportControlled.transformSocketToSSLSocket(ExportControlled.java:186)
CODE
分析
因为安全的问题, 新版本的JDK 不再支持 TLSv1.0 和 TLS v1.1 版本的TSL , 但MySQL的数据库还支持,我们可以通过以下方式查看MsSQL 支持的TLS版本, 登录到MySQL,执行以下查询
SHOW GLOBAL VARIABLES LIKE 'tls_version';
CODE
解决办法
有两种解决办法,使用TLSv1.2 或者不使用 SSL连接
指定使用TLSv1.2
配置Jira Home 目录下的 dbconfig.xml, 在数据库连接符后面加上 &enabledTLSProtocols=TLSv1.2
jdbc:mysql://<host>:<port>/<dbname>?...&enabledTLSProtocols=TLSv1.2
CODE
& 是 & 的转义
然后重启Jira
指定禁用SSL
配置Jira Home 目录下的 dbconfig.xml, 在数据库连接符后面加上 &useSSL=false
jdbc:mysql://<host>:<port>/<dbname>?...&useSSL=false
CODE
然后重启Jira