Kubernetes环境下Laravel与MySQL通信失败及phpMyAdmin登录问题
问题修复方案
1. Laravel数据库连接地址配置错误
你的Laravel .env 文件中 DB_HOST 写错了,应该指向Kubernetes里MySQL服务的名称(mysql),而不是Laravel自身的Pod名称:
DB_CONNECTION=mysql DB_HOST=mysql # 修改为MySQL服务名 DB_PORT=3306 DB_DATABASE=laravel_electron DB_USERNAME=root DB_PASSWORD=root
2. MySQL ConfigMap变量名不符合镜像要求
MySQL官方镜像需要用 MYSQL_DATABASE 指定初始化的数据库名,而非你用的 DB_NAME,修改 configmap.yaml:
apiVersion: v1 kind: ConfigMap metadata: name: db-config labels: app: mysql data: MYSQL_DATABASE: laravel_electron # 替换原DB_NAME DB_USERNAME: root DB_PASSWORD: root MYSQL_ROOT_PASSWORD: root
3. phpMyAdmin缺少MySQL连接配置
phpMyAdmin需要配置环境变量才能连接到MySQL,修改 php.yaml 的Pod部分:
apiVersion: v1 kind: Pod metadata: name: php labels: app: php spec: containers: - name: phpmy image: phpmyadmin:latest resources: limits: memory: "128Mi" cpu: "500m" ports: - containerPort: 80 env: - name: PMA_HOST value: mysql # 指向MySQL服务名 - name: PMA_USER value: root - name: PMA_PASSWORD value: root --- apiVersion: v1 kind: Service metadata: name: php-service spec: selector: app: php ports: - port: 80 targetPort: 80 protocol: TCP type: NodePort
4. 生效步骤
- 重新应用ConfigMap:
kubectl apply -f configmap.yaml - 重启MySQL Pod:
kubectl delete pod mysql && kubectl apply -f sql.yaml - 重启Laravel Pod:
kubectl delete pod laravel-container && kubectl apply -f laravel.yaml - 重启phpMyAdmin Pod:
kubectl delete pod php && kubectl apply -f php.yaml - 进入Laravel Pod执行迁移:
kubectl exec -it laravel-container -- php artisan migrate --seed
内容的提问来源于stack exchange,提问作者user24675945
相关产品推荐
相关产品推荐

