求解决困扰几天了:数据库连接超时: Connection timed out: connect

报错信息:Caused by: com.mysql.cj.exceptions.CJCommunicationsException: Communications link failure

 

java.sql.SQLNonTransientConnectionException: Could not create connection to database server. Attempted reconnect 3 times. Giving up.
	at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:110) ~[mysql-connector-java-8.0.23.jar:8.0.23]
	at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:97) ~[mysql-connector-java-8.0.23.jar:8.0.23]
	at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:89) ~[mysql-connector-java-8.0.23.jar:8.0.23]
	at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:63) ~[mysql-connector-java-8.0.23.jar:8.0.23]
	at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:73) ~[mysql-connector-java-8.0.23.jar:8.0.23]
	at com.mysql.cj.jdbc.ConnectionImpl.connectWithRetries(ConnectionImpl.java:903) ~[mysql-connector-java-8.0.23.jar:8.0.23]
	at com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:828) ~[mysql-connector-java-8.0.23.jar:8.0.23]
	at com.mysql.cj.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:453) ~[mysql-connector-java-8.0.23.jar:8.0.23]
	at com.mysql.cj.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:246) ~[mysql-connector-java-8.0.23.jar:8.0.23]
	at com.mysql.cj.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:198) ~[mysql-connector-java-8.0.23.jar:8.0.23]
	at com.alibaba.druid.filter.FilterChainImpl.connection_connect(FilterChainImpl.java:156) ~[druid-1.1.16.jar:1.1.16]
	at com.alibaba.druid.filter.stat.StatFilter.connection_connect(StatFilter.java:218) ~[druid-1.1.16.jar:1.1.16]
	at com.alibaba.druid.filter.FilterChainImpl.connection_connect(FilterChainImpl.java:150) ~[druid-1.1.16.jar:1.1.16]
	at com.alibaba.druid.pool.DruidAbstractDataSource.createPhysicalConnection(DruidAbstractDataSource.java:1598) ~[druid-1.1.16.jar:1.1.16]
	at com.alibaba.druid.pool.DruidAbstractDataSource.createPhysicalConnection(DruidAbstractDataSource.java:1662) ~[druid-1.1.16.jar:1.1.16]
	at com.alibaba.druid.pool.DruidDataSource$CreateConnectionThread.run(DruidDataSource.java:2601) ~[druid-1.1.16.jar:1.1.16]
Caused by: com.mysql.cj.exceptions.CJCommunicationsException: Communications link failure

 

已确定信息:服务器Mysql版本:8.0.23,项目mysql-connecter..版本:8.0.23

                     mysql过期时间已经已经设为最大:wait_timeout | 31536000;interactive_timeout | 31536000

                     navicat连接数据库正常,端口开放,防火墙关闭

 

 

求求怎么解决,困扰几天了

 

你写个简单的 demo,然后连一下这个数据库试试呢,就用 DriverManager.getConnection(url, username, password) 试试。先看看是环境还问题,还是其他问题

本地能 telnet 通数据库的服务地址吗

 1. 确认连接参数,和实际用的包版本。参照官网https://dev.mysql.com/doc/connector-j/5.1/en/connector-j-versions.html 
确认使用官网对应的连接版本。
2. 贴出更多包版本信息,连接参数配置。

driver-class-name: com.mysql.cj.jdbc.Driver
连接加上serverTimezone=UTC

Communications link failure,这个鬼东西之前我们是服务器不稳定,重启数据库就行了

服务,MySQL 重新启动

3306端口是不是没有开放

mysql命令执行,使其可以远程访问:

grant all privileges on *.* to 'root'@'%' identified by '123' with grant option;
FLUSH PRIVILEGES;

感觉你这是有配置SSH代理吧? 你用连接工具连的时候有配置SSH代理的话就肯定连不上的,如果一定要本地连接,可以使用一个本地代理软件;

比如:PuTTY

https://blog.csdn.net/wuchenlhy/article/details/79643590 可以搜索一下试用方式

首先你要确保在服务器本地上执行mysql -h xxx.xxx.xx.xx -p 3306 -uroot -p 能连接上,如果这个都连接不上就不要在代码那折腾了,肯定是你mysql权限问题。

ping不通啊,楼主解决了没有