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

无法远程连接MariaDB服务器求助:Ubuntu VPS连接超时问题

无法远程连接MariaDB服务器(连接超时)

环境信息

  • 两台Ubuntu Server 20.04 LTS VPS
  • VPS #1(MariaDB服务器):MariaDB 10.3.34,无本地防火墙(iptables/ufw未启用)
    • 核心配置(/etc/mysql/mariadb.conf.d/50-server.cnf):
      #
      # * Basic Settings
      #
      user                    = mysql
      pid-file                = /run/mysqld/mysqld.pid
      socket                  = /run/mysqld/mysqld.sock
      port                    = 3306
      basedir                 = /usr
      datadir                 = /var/lib/mysql
      tmpdir                  = /tmp
      lc-messages-dir         = /usr/share/mysql
      #skip-external-locking
      
      # Instead of skip-networking the default is now to listen only on
      # localhost which is more compatible and is not less secure.
      bind-address            = 0.0.0.0
      
    • 端口监听状态(netstat -ant | grep 3306):
      tcp        0      0 0.0.0.0:3306            0.0.0.0:*               LISTEN
      tcp        0      0 127.0.0.1:3306          127.0.0.1:46154         TIME_WAIT
      tcp        0      0 127.0.0.1:3306          127.0.0.1:59448         TIME_WAIT
      tcp        0      0 127.0.0.1:3306          127.0.0.1:46174         TIME_WAIT
      tcp        0      0 127.0.0.1:3306          127.0.0.1:46184         TIME_WAIT
      tcp        0      0 127.0.0.1:3306          127.0.0.1:59432         TIME_WAIT
      tcp        0      0 127.0.0.1:3306          127.0.0.1:59442         TIME_WAIT
      tcp        0      0 127.0.0.1:46162         127.0.0.1:3306          TIME_WAIT
      
    • 已创建远程访问用户并授权:
      MariaDB [(none)]> CREATE DATABASE xxxdb;
      MariaDB [(none)]> CREATE USER  'xxxuser'@'%' IDENTIFIED BY 'password';
      MariaDB [(none)]> GRANT ALL ON *.* to 'xxxuser'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION;
      MariaDB [(none)]> FLUSH PRIVILEGES;
      MariaDB [(none)]> EXIT;
      
  • VPS #2(客户端):已安装mariadb-client和telnet,连接测试结果:
    • MariaDB客户端连接:
      mariadb -u xxxuser -h SERVERIP -P 3306 -p
      Enter password:
      ERROR 2003 (HY000): Can't connect to MySQL server on 'SERVERIP' (110 "Connection timed out")
      
    • Telnet连接:
      telnet SERVERIP 3306
      Trying SERVERIP...
      telnet: Unable to connect to remote host: Connection timed out
      

排查与解决建议

  • 检查VPS提供商的安全组/防火墙规则:绝大多数云服务商(如DigitalOcean、AWS、阿里云等)都会提供独立的安全组/防火墙配置,即使VPS本地未启用防火墙,服务商层面可能默认拦截3306端口。登录服务商控制台,确保已添加允许VPS #2的IP(或所有IP,测试用)访问3306端口的入站规则。
  • 验证基础网络连通性:在VPS #2上执行ping SERVERIP,确认两台VPS之间网络可达。如果ping不通,优先排查VPS的网络路由、IP是否正确配置;如果ping通但连接超时,说明端口被拦截。
  • 确认MariaDB服务状态:在VPS #1上执行systemctl status mariadb,检查服务是否正常运行,有无启动失败或配置错误的日志提示。若服务异常,重启服务并查看/var/log/mysql/error.log定位问题。
  • 核实用户权限配置:在VPS #1的MariaDB中执行以下命令,确认用户的远程访问权限是否正确生效:
    SELECT user, host FROM mysql.user WHERE user='xxxuser';
    
    确保返回的host字段为%,而非特定IP或localhost。
  • 抓包验证数据包到达情况:在VPS #1上执行tcpdump -i any port 3306,然后在VPS #2上发起连接请求。如果VPS #1未捕获到相关数据包,说明数据包在传输途中被拦截;如果捕获到数据包,查看MariaDB错误日志(/var/log/mysql/error.log)是否有拒绝连接的具体原因。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 01:15:53