GitHub Actions执行Python脚本连接MariaDB超时问题咨询
问题分析与解决方案
从错误信息和你描述的情况来看,核心问题是GitHub Actions的运行环境无法访问你的MariaDB服务器,而本地能正常连接,大概率是网络访问限制导致的,具体原因和解决方法如下:
主要原因
防火墙/安全组白名单限制
你的本地IP已经被加入MariaDB服务器的防火墙或云安全组白名单,允许访问3306端口;但GitHub Actions的运行环境属于GitHub的公共服务器,其IP不在白名单内,因此被拒绝连接。另外很多服务器会禁用ICMP请求(ping),所以ping超时是正常的,不用作为判断依据。MariaDB绑定地址限制
如果你的MariaDB配置文件(my.cnf或my.ini)中bind-address设置为127.0.0.1或仅内网IP,那么MariaDB只会监听本地/内网请求,外网(包括GitHub Actions)无法建立连接。
解决步骤
1. 检查并更新防火墙/安全组规则
- 临时测试:在MariaDB服务器的防火墙或云安全组中,临时允许所有IP访问3306端口,然后重新运行GitHub Actions工作流。如果能正常连接,说明确实是白名单问题。
- 长期方案:获取GitHub官方公布的Actions runner IP段,将这些IP段添加到MariaDB服务器的白名单中。注意GitHub的IP段会定期更新,需要同步维护。
2. 验证MariaDB绑定地址
- 打开MariaDB配置文件,查找
bind-address配置项:
将其设置为bind-address = 0.0.0.00.0.0.0(允许所有IP访问),然后重启MariaDB服务。如果你的MariaDB部署在内网,也可以设置为内网IP+允许GitHub IP段的方式。
3. 测试端口连通性
在GitHub Actions工作流中添加端口测试步骤,替代ping命令:
- name: Test MariaDB port connectivity run: nc -zv <你的MariaDB IP> 3306
如果命令返回成功,说明端口能通;如果失败,进一步确认防火墙或网络路由问题。
4. 替代方案(若无法放开IP限制)
- 使用自托管GitHub Runner:在能访问MariaDB的内网服务器上部署自托管Runner,让脚本在该环境运行,避免跨网络访问限制。
- 建立SSH隧道:在GitHub Actions工作流中通过SSH隧道连接MariaDB,将本地端口转发到MariaDB服务器的3306端口。
内容的提问来源于stack exchange,提问作者김민선
相关产品推荐
相关产品推荐

