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

Kubernetes部署WordPress与MySQL时数据库连接失败求助

排查WordPress-MySQL数据库连接错误

以下是你的配置中存在的几个关键问题,以及对应的修复方案:

1. PersistentVolumeClaim名称不匹配且存储资源请求超限

  • 在persistent-volume.yaml中,你定义的MySQL PVC名称是mysql-pv-claims,但mysql-deployment.yaml里的Deployment引用的PVC是mysql-pv-claim,名称不一致会导致MySQL Pod无法找到存储卷。
  • 同时,mysql-deployment.yaml里重复定义的PVC请求20Gi存储,但你创建的PV只有3Gi容量,PVC无法绑定到PV,会处于Pending状态,导致MySQL Pod无法正常启动。

修复方案:

修改persistent-volume.yaml中的MySQL PVC名称为mysql-pv-claim,并调整存储请求为1Gi(匹配PV的可用容量):

apiVersion: v1 
kind: PersistentVolumeClaim
metadata:
  name: mysql-pv-claim  # 修正名称
spec:
  accessModes:
    - ReadWriteOnce
  volumeMode: Filesystem 
  resources:
    requests:
      storage: 1Gi  # 调整为PV可分配的容量

同时删除mysql-deployment.yaml中重复定义的PVC部分(因为已经在persistent-volume.yaml中定义过)。

2. MySQL容器缺少必要的环境变量

WordPress官方镜像默认需要连接名为wordpress的数据库,且使用wordpress专用用户(而非root),但你的MySQL部署只设置了MYSQL_ROOT_PASSWORD,没有初始化对应的数据库和用户,导致WordPress无法建立有效连接。

修复方案:

在mysql-deployment.yaml的容器环境变量中添加以下内容:

env:
- name: MYSQL_ROOT_PASSWORD
  valueFrom:
    secretKeyRef:
      name: sql-pass
      key: password
- name: MYSQL_DATABASE
  value: wordpress  # 创建WordPress需要的数据库
- name: MYSQL_USER
  value: wordpress  # 创建WordPress专用用户
- name: MYSQL_PASSWORD
  valueFrom:
    secretKeyRef:
      name: sql-pass
      key: password  # 该用户的密码,可与root密码一致

3. HostPath目录权限问题

使用hostPath作为PV时,节点上的/data/pv目录权限可能不符合MySQL容器的需求(MySQL容器内的mysql用户UID为999,需要该目录的写入权限)。

修复方案:

在Kubernetes节点上手动调整目录权限:

mkdir -p /data/pv
chown -R 999:999 /data/pv

4. 验证组件状态

完成上述修改后,执行以下命令验证组件状态:

  • 检查PVC绑定状态:kubectl get pvc,确保mysql-pv-claim和wp-pv-claim状态为Bound
  • 检查Pod运行状态:kubectl get pods,确保两个Deployment的Pod都处于Running状态
  • 检查Service状态:kubectl get svc,确保wordpress-mysql和wordpress服务正常存在

额外优化建议

WordPress的环境变量中,建议明确指定数据库用户名和名称,避免默认值冲突:

env:
- name: WORDPRESS_DB_HOST
  value: wordpress-mysql
- name: WORDPRESS_DB_USER
  value: wordpress  # 指定使用专用用户而非root
- name: WORDPRESS_DB_PASSWORD
  valueFrom:
    secretKeyRef:
      name: sql-pass
      key: password
- name: WORDPRESS_DB_NAME
  value: wordpress  # 明确指定数据库名称

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 11:20:28