You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

无法从外部连接MariaDB数据库的问题排查求助

MariaDB远程连接超时(10060)问题排查与解决

问题场景

家用PC通过DBeaver/HeidiSQL连接VPS上的MariaDB时出现超时(错误码10060),已完成以下操作但未解决:

  • 确认IP、端口、账号密码正确,能ping通服务器,本地可通过phpMyAdmin访问数据库
  • 修改/etc/mysql/mariadb.conf.d/50-server.cnf设置bind-address = 0.0.0.0
  • 创建主机为%的授权用户并赋予GRANT OPTION权限
  • 服务器内iptables -L显示3306端口放行,未安装UFW
  • netstat -tlnp | grep 3306显示端口处于监听状态,但外部端口检测工具显示端口关闭

排查与解决步骤

  • 检查云服务商安全组规则
    多数VPS服务商的云安全组独立于服务器内部防火墙,即使服务器内放行3306,安全组未开放则外部无法访问。登录服务商后台,找到对应服务器的安全组,添加入站规则:允许TCP协议3306端口,源地址设为游戏服务器IP(推荐)或0.0.0.0/0(全开放,不建议)。

  • 验证MariaDB用户授权有效性
    登录服务器本地MariaDB,执行以下命令确认授权:

    FLUSH PRIVILEGES;
    SELECT user, host FROM mysql.user WHERE user = '你的用户名';
    

    确保查询结果中用户的host为%或游戏服务器IP。若存在同一用户的host为localhost的条目,优先匹配本地规则会导致远程连接失败,可删除该冗余条目。

  • 确认iptables规则正确性
    执行sudo iptables -L -n查看规则,需存在如下条目:

    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:3306
    

    若缺失,添加规则并保存:

    sudo iptables -A INPUT -p tcp --dport 3306 -j ACCEPT
    sudo iptables-save > /etc/iptables/rules.v4  # 防止重启后规则丢失
    

    注意:若iptables默认规则为DROP所有入站流量,需确保ACCEPT规则在DROP规则之前。

  • 验证端口监听配置
    执行ss -tlnp | grep 3306(比netstat更准确),确认监听地址为0.0.0.0:3306或:::3306,而非127.0.0.1:3306。若为后者:

    • 检查是否有其他配置文件(如/etc/mysql/my.cnf、/etc/mysql/conf.d/下的文件)覆盖了bind-address设置
    • 修改配置后执行sudo systemctl restart mariadb重启服务
  • 跨节点端口连通性测试
    在游戏服务器上执行nc -zv 1.2.3.4 3306或telnet 1.2.3.4 3306:

    • 若游戏服务器也无法连接,问题在VPS端;
    • 若游戏服务器能连接但家用PC不行,需排查家用网络(如运营商屏蔽3306、路由器防火墙限制)
  • 查看MariaDB错误日志
    查看/var/log/mariadb/mariadb.log(路径可能因系统不同略有差异),查找连接失败的具体报错信息,进一步定位问题。

内容的提问来源于stack exchange,提问作者Michael Griffith

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 23:35:26