AWS Kubernetes集群部署WordPress与MySQL报数据库连接错误排查
配置错误定位与修正方案
会直接触发数据库连接报错的核心问题
- MySQL Deployment 端口声明错误:
mysql-deployment.yaml中把MySQL容器的containerPort配置为80,和MySQL 5.7默认监听的3306端口不匹配,属于无效配置 - WordPress 数据库凭证错配:WordPress部署配置中
WORDPRESS_DB_PASSWORD的值被设为wpdb,但wpdb是MySQL初始化时指定的数据库名,对应用户的密码需要和MySQL侧定义的MYSQL_PASSWORD=DEVOPS12345保持一致,凭证不匹配会直接被MySQL拒绝连接 - WordPress 数据库名配置缺失:现有配置未指定
WORDPRESS_DB_NAME,WordPress启动时会默认尝试连接名为wordpress的数据库,和MySQL初始化时创建的wpdb库名不匹配,即使凭证正确也会连接失败 - 启动时序问题:MySQL容器首次启动需要30-60秒完成数据库、用户、权限的初始化,初始化完成前发起的数据库连接都会被拒绝
修正后的配置参考
修正mysql-deployment.yaml的端口配置
spec: containers: - name: mysql image: mysql:5.7 ports: - name: mysql containerPort: 3306 # 替换原错误的80端口配置,匹配MySQL实际监听端口 env: - name: MYSQL_ROOT_PASSWORD value: DEVOPS1 - name: MYSQL_USER value: wpuser - name: MYSQL_PASSWORD value: DEVOPS12345 - name: MYSQL_DATABASE value: wpdb
mysql-service.yaml 配置校准
原有配置中targetPort: 3306和修正后的MySQL容器端口是匹配的,可直接保留使用。
修正wordpress-deployment.yaml的环境变量配置
spec: containers: - name: wordpress image: wordpress ports: - containerPort: 80 env: - name: WORDPRESS_DB_HOST value: mysql-service # 同命名空间下可正常解析Service域名,该配置无需修改 - name: WORDPRESS_DB_USER value: wpuser # 和MySQL侧创建的用户一致,无需修改 - name: WORDPRESS_DB_PASSWORD value: DEVOPS12345 # 替换原错误的wpdb值,和MySQL侧用户密码完全对齐 - name: WORDPRESS_DB_NAME value: wpdb # 新增配置,和MySQL侧初始化创建的数据库名一致 - name: WORDPRESS_DEBUG value: "1"
部署后验证步骤
- 执行
kubectl get pods确认两个Deployment的Pod状态均为Running,且MySQL Pod达到就绪状态(1/1)后,再验证WordPress连通性 - 执行
kubectl get endpoints mysql-service,确认输出的Endpoint列表不为空,且包含对应Pod的3306端口映射 - 临时启动测试容器验证数据库连通性:执行
kubectl run mysql-test --rm -it --image=mysql:5.7 -- mysql -h mysql-service -u wpuser -pDEVOPS12345 wpdb,能正常进入MySQL交互界面就说明网络和凭证配置通畅 - AWS安全组无需单独为公网开放3306端口,集群内Pod流量走节点内部网络,不经过公网安全组规则校验
内容的提问来源于stack exchange,提问作者Sameera
相关产品推荐
相关产品推荐

