将Cloud Run服务连接至Compute Engine部署的MySQL遇配置问题
确认VPC Connector的服务账号权限:
尽管此前连接Cloud SQL正常,但连接GCE实例需要Connector关联的服务账号具备Compute Network User角色,确保它有权限访问GCE所在的VPC子网。可直接在IAM控制台检查该服务账号的权限配置,缺失则补充对应角色。检查GCE的入站防火墙规则:
默认VPC的default-allow-internal规则仅允许同一子网内的实例通信。如果VPC Connector与GCE不在同一子网,必须新增一条入站规则:方向设为ingress,目标选择GCE实例所在子网或对应的实例标签,端口指定MySQL的服务端口(通常是3306),来源填写VPC Connector所属子网的CIDR段。验证MySQL的绑定地址配置:
登录GCE实例,查看MySQL配置文件(常见路径为/etc/mysql/mysqld.cnf)中的bind-address参数。若该值设为127.0.0.1,MySQL仅会监听本地回环接口,外部请求(包括VPC Connector发起的)无法接入,需修改为GCE的私网IP或0.0.0.0(允许所有网卡监听),修改后重启MySQL服务生效。检查MySQL用户的登录权限范围:
登录MySQL执行SELECT user, host FROM mysql.user;,查看连接用账号的host字段。若为localhost或GCE本地IP,仅VM自身可连接,需调整权限:执行ALTER USER '你的账号'@'localhost' IDENTIFIED BY '你的密码';,再将host改为VPC私网段(如默认VPC的10.0.0.0/8),最后执行FLUSH PRIVILEGES;使配置生效。确认VPC路由表的连通性:
虽为默认VPC,但若曾修改过路由表,需检查是否存在阻止Connector子网与GCE子网通信的条目。默认情况下默认VPC的路由表允许所有内部子网互访,可在VPC网络的路由页面确认这一点。
内容的提问来源于stack exchange,提问作者Goviella

