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

谷歌云平台MariaDB报Error No.2003无法连接,已改配置仍未解决

解决GCP上MariaDB 2003无法远程连接的问题

我来帮你一步步排查这个问题——在GCP上跑数据库遇到远程连接失败,尤其是已经做了基础配置还不行的情况,大概率是防火墙或者服务配置的细节没到位。结合你提供的信息,咱们从这几个方向入手:

1. 先检查GCP的防火墙规则(最容易忽略的点)

GCP默认会阻断所有外部对虚拟机实例的入站连接,哪怕你在服务器里开了端口也没用。你需要在GCP控制台配置允许3306端口的入站规则:

  • 进入「VPC网络」→「防火墙规则」,点击「创建防火墙规则」
  • 规则名称随便填(比如allow-mysql-remote),方向选「入站」,目标选「指定的目标标签」,然后输入你虚拟机实例的标签(如果没标签,先给实例加一个)
  • 来源IP范围填你本地机器的公网IP(更安全)或者0.0.0.0/0(不推荐,开放给所有人)
  • 协议和端口选「指定的协议和端口」,输入tcp:3306,然后保存

2. 确认MariaDB服务是否真的监听了0.0.0.0

你改了bind-address但可能没生效,先验证服务的监听状态:
在服务器上执行:

ss -tulpn | grep 3306

如果输出里显示的是127.0.0.1:3306,说明配置没生效,可能是这几个原因:

  • 你改的配置文件不对:MariaDB可能加载多个配置文件,用这个命令看加载顺序:
    mysql --help | grep "Default options"
    
    确保你修改的是排在前面的配置文件(比如/etc/mysql/my.cnf可能会覆盖其他子配置)
  • 重启命令有误:你用的sudo mysql service restart是错的,正确的重启命令应该是:
    sudo systemctl restart mariadb
    
    或者老版本的Debian用:
    sudo service mariadb restart
    
    执行完再用ss命令检查监听状态。

3. 验证远程用户的权限配置是否正确

创建用户时要确保host是%(允许所有IP)或者你本地的公网IP,而不是localhost:
先登录MariaDB:

mysql -u root -p

然后执行:

SELECT user, host FROM mysql.user;

找到你创建的远程用户,确认host字段是%或者你的IP。如果不是,重新创建用户:

CREATE USER 'your-user'@'%' IDENTIFIED BY 'your-password';
GRANT ALL PRIVILEGES ON your-db.* TO 'your-user'@'%'; -- 按需给权限,不要随便给*.*
FLUSH PRIVILEGES;

4. 检查服务器本地的防火墙(比如ufw)

如果GCP防火墙开了,但服务器本地的ufw还阻断3306端口,也会连不上:
先看ufw状态:

sudo ufw status

如果是active,添加允许规则:

sudo ufw allow from your-local-ip to any port 3306

或者开放所有来源(不推荐):

sudo ufw allow 3306/tcp

5. 最后测试连通性

在你本地机器上执行:

nc -zv your-server-public-ip 3306

如果显示succeeded,说明端口通了,再尝试用MySQL客户端连接;如果还是失败,回到前面的步骤逐一排查。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 08:56:24