Liquibase在GitHub Actions及Diff生成时出现连接超时错误求助
解决Liquibase连接MariaDB超时问题
错误信息
Unexpected error running Liquibase: Connection could not be created to jdbc:mariadb://10.13.10.2:3306/liquibase_test with driver org.mariadb.jdbc.Driver. Socket fail to connect to host:address=(host=10.13.10.2)(port=3306)(type=primary). Connect timed out
排查与解决步骤
验证网络连通性
在运行Liquibase的机器(GitHub Actions runner或你的服务器)上执行以下命令,测试能否访问数据库端口:nc -zv 10.13.10.2 3306 # 或者用telnet telnet 10.13.10.2 3306如果连接失败,说明网络层面存在阻断:
- 检查数据库服务器的防火墙/安全组,开放3306端口的入站规则,允许runner和服务器的IP访问;
- 确认中间网络(如VPN、代理)是否正常,是否需要配置路由规则。
检查MariaDB绑定地址
登录数据库服务器,查看my.cnf(或my.ini)中的bind-address配置:# 若配置为127.0.0.1,仅允许本地访问,需修改为0.0.0.0(允许所有IP)或指定允许的IP段 bind-address = 0.0.0.0修改后重启MariaDB服务:
systemctl restart mariadb同时确认数据库服务正常监听3306端口:
netstat -tulpn | grep 3306确认数据库用户访问权限
登录MariaDB,检查连接用户的访问权限范围:SELECT user, host FROM mysql.user WHERE user='你的数据库用户名';如果
host字段是localhost或特定IP,而你的runner/服务器不在允许范围内,执行授权语句:-- 允许从任意IP访问(生产环境建议限制具体IP) GRANT ALL PRIVILEGES ON liquibase_test.* TO '你的用户名'@'%' IDENTIFIED BY '你的密码'; FLUSH PRIVILEGES;校验Liquibase配置
确认Liquibase配置文件(如liquibase.properties)中的参数是否正确:url: jdbc:mariadb://10.13.10.2:3306/liquibase_test driver: org.mariadb.jdbc.Driver username: 你的用户名 password: 你的密码同时确保已正确引入MariaDB JDBC驱动,比如在Maven依赖中添加:
<dependency> <groupId>org.mariadb.jdbc</groupId> <artifactId>mariadb-java-client</artifactId> <version>最新稳定版</version> </dependency>GitHub Actions额外排查
- 若使用GitHub托管runner:目标数据库必须公网可访问,或通过VPC peering、内网隧道等方式打通GitHub runner与内网数据库的连接;
- 若使用自托管runner:确认runner所在机器能正常访问数据库IP,且已完成上述网络、权限配置。
内容的提问来源于stack exchange,提问作者Dinesh Sai
相关产品推荐
相关产品推荐

