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

如何修改Docker Compose让phpMyAdmin用SSL连接远程数据库

解决phpMyAdmin Docker容器连接远程数据库的SSL加密问题

问题背景

你已经通过Docker部署了phpMyAdmin,使用Traefik配置了Let's Encrypt证书实现HTTPS访问,且设置PMA_ARBITRARY=1让用户手动输入远程数据库信息。目前phpMyAdmin能正常连接远程数据库,但与数据库的连接未加密(仅前端UI是HTTPS),你已经有可正常使用的远程数据库CA证书,需要配置phpMyAdmin使用该证书加密连接。


核心解决方案

你的思路是正确的,需要通过挂载自定义配置文件和证书到容器,修改phpMyAdmin的SSL连接参数。以下是具体步骤和说明:

1. 编写自定义配置文件config.user.inc.php

在宿主机的~/apps/phpmyadmin/目录下创建该文件,内容如下:

// 为所有手动添加的数据库服务器启用SSL加密
$cfg['Servers'][$i]['ssl'] = true;
// 启用SSL证书验证(确保连接的数据库是可信的)
$cfg['Servers'][$i]['ssl_verify'] = true;
// 指定容器内CA证书的挂载路径
$cfg['Servers'][$i]['ssl_ca'] = '/etc/phpmyadmin/ca.certificate.crt';

2. 修改Docker Compose配置

需要添加两个挂载项,注意去掉路径末尾的多余空格(否则会导致挂载失败),修改后的完整配置如下:

version: '3.3'

services:
    phpmyadmin:
        container_name: phpmyadmin
        environment:
            - PMA_ARBITRARY=1
        image: phpmyadmin
        restart: unless-stopped
        networks:
          - traefik
          - default
        labels:
          - "traefik.enable=true"
          - "traefik.docker.network=traefik"
          - "traefik.http.routers.phpmyadmin-secure.entrypoints=websecure"
          - "traefik.http.routers.phpmyadmin-secure.rule=Host(`phpmyadmin.example.com`)"
        volumes:
          - ~/apps/phpmyadmin/config.user.inc.php:/etc/phpmyadmin/config.user.inc.php
          - ~/apps/phpmyadmin/ca.certificate.crt:/etc/phpmyadmin/ca.certificate.crt

networks:
  traefik:
    external: true

你的疑问解答

  1. 是否需要添加挂载配置?
    是的,必须添加这两个挂载:

    • 挂载config.user.inc.php让phpMyAdmin加载你的SSL配置
    • 挂载CA证书到容器内,让phpMyAdmin可以读取并用于验证数据库连接
  2. config.user.inc.php是否只需包含所需配置?
    完全正确。phpMyAdmin会优先加载默认的config.inc.php,再加载用户自定义的config.user.inc.php,用户配置只会覆盖默认配置中对应的参数,其余默认设置保持不变,不需要复制完整的默认配置内容。


额外注意事项

  • 权限设置:确保宿主机上的证书和配置文件权限正确,容器内的phpMyAdmin进程需要读取权限,可执行命令:
    chmod 644 ~/apps/phpmyadmin/ca.certificate.crt ~/apps/phpmyadmin/config.user.inc.php
    
  • Portainer路径问题:如果通过Portainer部署,注意Portainer运行的用户是否有权限访问~/apps/phpmyadmin/目录,必要时将~替换为绝对路径(例如/home/your-username/apps/phpmyadmin/)
  • 测试验证:重新部署容器后,手动连接远程数据库,phpMyAdmin UI会显示连接已使用SSL加密

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 17:25:18