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

Kubernetes连接MySQL报错:无法通过套接字连接本地MySQL服务器

解决Kubernetes Minikube中MySQL连接报错ERROR 2002的问题

问题原因

你执行mysql -u root -padmn -P3306时未指定连接主机,默认会尝试通过本地Unix socket文件/var/run/mysqld/mysqld.sock连接,但:

  • 如果是在应用Pod中执行该命令:应用Pod内未安装MySQL服务,不存在这个socket文件
  • 即使在MySQL Pod内执行,部分场景下MySQL服务可能未绑定到socket,或者需要显式指定TCP连接

另外,你的Secret中存储的密码存在格式问题:YWRtaW4K解码后是admin\n(包含换行符),可能导致后续认证失败。

解决步骤

1. 修正MySQL连接命令

无论在应用Pod还是MySQL Pod中,显式指定主机地址(使用Kubernetes Service域名):

mysql -u root -padmn -h mysql -P3306
  • mysql是你定义的Service名称,Kubernetes DNS会自动将其解析为MySQL Pod的IP地址

2. 修复Secret中的密码格式

当前Secret里的密码包含换行符,重新生成无换行的base64编码值:

# 生成admin的base64编码(无换行)
echo -n "admin" | base64

得到YWRtaW4=,替换mysql-secret.yaml中的对应值,然后重新应用:

kubectl apply -f mysql-secret.yaml

3. 验证MySQL服务状态

  • 检查Pod是否正常运行:
    kubectl get pods -l app=mysql
    
    确保状态为Running
  • 查看MySQL Pod日志,确认服务启动成功:
    kubectl logs <mysql-pod-name>
    
    日志中出现ready for connections则说明服务正常

4. 确认网络可达性

在应用Pod中执行ping命令,验证是否能解析MySQL Service:

ping mysql -c 3

如果能正常解析并收到响应,说明Kubernetes DNS和网络连通性正常

额外说明

  • Kubernetes Pod是隔离的运行环境,本地主机的MySQL安装/卸载不会影响Pod内的操作,之前Ubuntu虚拟机运行正常是因为连接命令或环境配置正确
  • 你的YAML配置文件整体结构没问题,Service和Deployment的关联、存储卷配置都符合规范,只需修正连接方式和Secret密码格式

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 17:33:23