GCloud环境下ProxySQL健康检查配置问题咨询
问题分析与解决步骤
1. 先明确错误码13的本质
错误码13对应Linux的EACCES,就是权限被拒绝——要么你的verify_proxy_config.sh脚本本身没执行权限,要么执行脚本的用户没权限访问所需资源。
2. 检查脚本基础权限
- 先看脚本有没有可执行权限:
跑这个命令查权限:
如果输出里没ls -l verify_proxy_config.shx标记(比如显示-rw-r--r--),赶紧加执行权限:chmod +x verify_proxy_config.sh - 再确认脚本所在目录对ProxySQL运行用户有读权限:
ProxySQL默认用proxysql用户跑,查目录权限:
确保目录权限是ls -ld /path/to/script/directorydrwxr-xr-x这类,让proxysql用户能读能进。
3. 确认脚本的执行用户
ProxySQL的REST API是用ProxySQL进程的用户身份执行脚本的(默认proxysql)。如果脚本里有需要高权限的操作(比如读系统文件、改配置),肯定会被拒。
- 可以在脚本开头加两行调试命令,看看实际执行用户是谁:
执行完看#!/bin/bash whoami >> /tmp/script_debug.log id >> /tmp/script_debug.log # 原脚本内容.../tmp/script_debug.log,确认用户权限够不够。
4. 检查Docker镜像的权限配置
因为是Docker镜像,构建时必须把权限设置对:
- Dockerfile里复制脚本后,要显式加执行权限:
COPY verify_proxy_config.sh /usr/local/bin/ RUN chmod +x /usr/local/bin/verify_proxy_config.sh - 别随便用
USER切到非特权用户,除非这个用户对脚本和依赖资源都有权限。
5. 核对ProxySQL的REST API配置
进ProxySQL admin界面查配置是否正确:
mysql -u admin -padmin -h 127.0.0.1 -P 6032
然后执行SQL看同步脚本的配置:
SELECT * FROM global_variables WHERE variable_name LIKE '%sync%';
确保restapi_sync_status_script指向的是容器内脚本的绝对路径,而且这个路径确实存在。
6. 直接调试脚本
用ProxySQL运行用户身份直接执行脚本,看能不能正常跑:
su - proxysql -c "/path/to/verify_proxy_config.sh"
如果报错,根据错误提示继续排查(比如缺依赖、文件读不了之类的)。
7. GCloud实例组的额外检查
你用的是127.0.0.1访问,属于容器内部健康检查,还要确认:
- ProxySQL的REST API已经开了:查
admin_variables里的restapi_enabled是不是true,restapi_port是不是6070。 - 容器内部没有防火墙或iptables规则拦127.0.0.1访问6070端口。
内容的提问来源于stack exchange,提问作者Hitesh patel
相关产品推荐
相关产品推荐

