共计 6032 个字符,预计需要花费 16 分钟才能阅读完成。
概述
phpMyAdmin 是一款用 PHP 编写的免费开源工具,旨在通过 Web 界面管理 MySQL 和 MariaDB 数据库。它支持数据库管理、表操作、用户权限配置等多种功能,同时提供 SQL 语句直接执行能力,是 Web 开发者和数据库管理员的常用工具。
本文档提供基于 Docker 容器化技术的 phpMyAdmin 部署方案,包括环境准备、镜像管理、容器部署、功能验证、生产环境优化及故障排查等内容,帮助用户快速实现 phpMyAdmin 的标准化部署。
环境准备
Docker 环境安装
使用以下一键脚本在 Linux 系统中安装 Docker 环境:
# 一键安装 Docker 及相关组件(支持 Ubuntu/Debian/CentOS 等主流发行版)bash <(wget -qO- https://xuanyuan.cloud/docker.sh)
验证 Docker 安装及加速配置是否成功:
# 检查 Docker 版本
docker --version
# 验证加速配置
docker info | grep "Registry Mirrors"
成功配置后,输出应包含 xxx.xuanyuan.run 镜像源。
镜像拉取
使用以下命令拉取官方 phpMyAdmin 镜像:
# 拉取 phpMyAdmin 官方镜像(使用轩辕加速地址)docker pull xxx.xuanyuan.run/library/phpmyadmin:latest
# 验证镜像拉取结果
docker images | grep phpmyadmin
输出示例:
xxx.xuanyuan.run/library/phpmyadmin latest abc12345 2 weeks ago 500MB
镜像标签说明
根据业务需求选择合适的镜像标签:
latest:最新稳定版(推荐生产环境使用)5.2.3-apache:特定版本 +Apache 环境(版本固定,适合稳定性要求高的场景)fpm:仅包含 PHP-FPM,需配合外部 Web 服务器使用fpm-alpine:基于 Alpine Linux 的轻量级版本,适合资源受限环境
查看所有可用标签:phpMyAdmin 镜像标签页面
容器部署
基础部署(链接数据库容器)
若已在本地运行 MySQL/MariaDB 容器(示例容器名为mysql_db_server),可通过链接方式部署:
# 启动 phpMyAdmin 并链接到本地 MySQL 容器
docker run -d \
--name phpmyadmin \
--link mysql_db_server:db \ # 链接到数据库容器,别名 db
-p 8080:80 \ # 映射容器 80 端口到主机 8080 端口
--restart unless-stopped \ # 容器退出时自动重启(除非手动停止)xxx.xuanyuan.run/library/phpmyadmin:latest
连接外部数据库服务器
若数据库部署在外部服务器(非本地容器),通过环境变量指定数据库地址:
# 连接外部 MySQL 服务器
docker run -d \
--name phpmyadmin \
-e PMA_HOST=192.168.1.100 \ # 外部数据库主机 IP 或域名
-e PMA_PORT=3306 \ # 数据库端口(默认 3306)-p 8080:80 \
--restart unless-stopped \
xxx.xuanyuan.run/library/phpmyadmin:latest
支持多数据库服务器(任意服务器模式)
通过 PMA_ARBITRARY=1 启用任意服务器连接模式,登录页面可手动输入数据库地址:
# 启用任意服务器连接模式
docker run -d \
--name phpmyadmin \
-e PMA_ARBITRARY=1 \ # 允许连接任意数据库服务器
-p 8080:80 \
--restart unless-stopped \
xxx.xuanyuan.run/library/phpmyadmin:latest
Docker Compose 部署
创建 compose.yaml 文件,定义数据库和 phpMyAdmin 服务:
services:
db:
image: xxx.xuanyuan.run/library/mariadb:10.11 # 使用 MariaDB 作为数据库
restart: always
environment:
MYSQL_ROOT_PASSWORD: secure_password # 数据库 root 密码(生产环境需修改)volumes:
- db_data:/var/lib/mysql # 持久化数据库数据
phpmyadmin:
image: xxx.xuanyuan.run/library/phpmyadmin:latest
restart: always
ports:
- "8080:80"
environment:
- PMA_ARBITRARY=1 # 允许连接任意数据库
depends_on:
- db # 依赖 db 服务,确保 db 先启动
volumes:
db_data: # 定义数据卷,持久化数据库数据
启动服务:
# 使用 docker compose 启动服务
docker compose up -d
自定义配置
通过挂载配置文件自定义 phpMyAdmin 设置,创建config.user.inc.php:
<?php
// 示例:启用 PHP 信息查看链接
$cfg['ShowPhpInfo'] = true;
// 设置默认语言为中文
$cfg['DefaultLang'] = 'zh_CN';
// 限制查询历史记录数量
$cfg['QueryHistoryMax'] = 50;
挂载配置文件启动容器:
# 挂载自定义配置文件
docker run -d \
--name phpmyadmin \
-e PMA_HOST=dbhost \
-p 8080:80 \
-v /path/to/config.user.inc.php:/etc/phpmyadmin/config.user.inc.php \ # 挂载本地配置文件
--restart unless-stopped \
xxx.xuanyuan.run/library/phpmyadmin:latest
功能测试
访问 phpMyAdmin 界面
- 打开浏览器,访问地址:
http://< 服务器 IP>:8080(替换为实际服务器 IP) - 若启用
PMA_ARBITRARY=1,在登录页面输入数据库服务器地址、用户名和密码:- 服务器:数据库 IP 或域名(如 192.168.1.100)
- 用户名:数据库用户名(如 root)
- 密码:对应用户的密码
- 若链接到本地数据库容器,直接使用数据库容器的凭据登录
基本功能验证
- 数据库列表查看:登录后确认显示目标数据库列表
- 表操作测试:创建测试数据库(如
test_db)和表(如users),验证 CRUD 功能 - SQL 执行测试:在 SQL 选项卡执行
SELECT VERSION();,确认返回数据库版本信息 - 用户管理测试:尝试创建新数据库用户并分配权限
高级功能验证(可选)
- 导入 / 导出测试:导出测试表数据为 SQL 文件,再导入验证数据一致性
- 查询历史记录:执行多条 SQL 语句,确认历史记录正常保存
- 主题切换:在设置中切换界面主题,验证显示正常
生产环境建议
安全性增强
- 敏感信息管理:使用环境变量文件或 Docker Secrets 存储凭据,避免明文暴露
# 使用环境变量文件 echo "PMA_HOST=dbhost" > .env echo "PMA_USER=admin" >> .env echo "PMA_PASSWORD_FILE=/run/secrets/db_pass" >> .env # 从文件读取密码 docker run -d --name phpmyadmin --env-file .env -v /secrets:/run/secrets phpmyadmin - HTTPS 配置:通过反向代理(如 Nginx)启用 HTTPS,避免明文传输
# Nginx 反向代理示例 server {listen 443 ssl; server_name pma.example.com; ssl_certificate /path/to/cert.pem; ssl_certificate_key /path/to/key.pem; location / { proxy_pass http://localhost:8080; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr;} } - 网络隔离:限制 phpMyAdmin 仅允许特定 IP 访问,通过 Docker 网络或防火墙实现
# 使用 Docker 网络隔离 docker network create pma_network docker run -d --name db --network pma_network mariadb docker run -d --name phpmyadmin --network pma_network -p 8080:80 phpmyadmin
持久化与配置管理
- 配置持久化:挂载配置目录而非单个文件,便于管理多个配置文件
# 挂载配置目录 docker run -d --name phpmyadmin \ -v /local/pma/conf.d:/etc/phpmyadmin/conf.d:ro \ # 只读挂载配置目录 phpmyadmin - 会话持久化:挂载 /sessions 目录,避免容器重启后会话丢失
docker run -d --name phpmyadmin \ -v /local/pma/sessions:/sessions:rw \ # 读写挂载会话目录 phpmyadmin
资源与性能优化
- 资源限制:设置 CPU 和内存使用上限,避免影响其他服务
docker run -d --name phpmyadmin \ --cpus 0.5 \ # 限制 CPU 使用为 0.5 核 --memory 512m \ # 限制内存使用为 512MB --memory-swap 1g \ # 限制交换空间为 1GB phpmyadmin - 性能调优:通过环境变量调整 PHP 配置
docker run -d --name phpmyadmin \ -e MEMORY_LIMIT=1G \ # 内存限制设为 1GB -e UPLOAD_LIMIT=100M \ # 上传文件大小限制为 100MB -e MAX_EXECUTION_TIME=1200 \ # 最大执行时间设为 20 分钟 phpmyadmin
监控与维护
- 日志管理:配置日志驱动,将容器日志发送到集中式日志系统
docker run -d --name phpmyadmin \ --log-driver json-file \ --log-opt max-size=10m \ # 单日志文件最大 10MB --log-opt max-file=3 \ # 最多保留 3 个日志文件 phpmyadmin - 定期更新:建立镜像更新机制,确保使用最新安全补丁
# 定期更新脚本示例(可加入 crontab)#!/bin/bash docker pull xxx.xuanyuan.run/library/phpmyadmin:latest docker stop phpmyadmin docker rm phpmyadmin docker run -d --name phpmyadmin [其他参数] xxx.xuanyuan.run/library/phpmyadmin:latest
故障排查
常见问题及解决方法
1. 无法连接数据库服务器
症状 :登录时提示 ” 无法连接到 MySQL 服务器 ”
排查步骤:
- 检查数据库服务器是否正常运行:
telnet <db_host> <db_port> - 验证容器网络连通性:
docker exec -it phpmyadmin ping <db_host> - 查看容器日志:
docker logs phpmyadmin,检查是否有连接超时或拒绝信息 - 确认环境变量配置正确:
docker inspect phpmyadmin | grep PMA_HOST
解决方法:
- 确保数据库服务器允许远程连接(检查 MySQL 的 bind-address 配置)
- 开放数据库服务器防火墙端口(如 3306)
- 修正 PMA_HOST/PMA_PORT 环境变量值
2. 端口冲突问题
症状 :启动容器时提示 ”Bind for 0.0.0.0:8080 failed: port is already allocated”
解决方法:
- 更换主机端口:
-p 8081:80(将 8081 替换为未占用端口) - 停止占用端口的进程:
sudo lsof -i :8080找到进程 PID 后kill <pid>
3. 权限问题(配置文件挂载)
症状 :自定义配置不生效或容器启动失败
排查步骤:
- 检查挂载文件权限:
ls -l /path/to/config.user.inc.php,确保容器内用户可读 - 查看容器内文件权限:
docker exec -it phpmyadmin ls -l /etc/phpmyadmin/config.user.inc.php
解决方法:
- 设置文件权限为 644:
chmod 644 /path/to/config.user.inc.php - 使用
--user参数指定容器用户:docker run --user root ...(仅调试用,生产环境不推荐)
4. 上传文件大小限制
症状 :导入数据库时提示 ” 上传的文件超出了 PHP 的 upload_max_filesize 指令 ”
解决方法:
- 通过环境变量调整上传限制:
-e UPLOAD_LIMIT=200M
官方支持资源
- Issue 跟踪:phpmyadmin/docker GitHub Issues
- 文档中心:phpMyAdmin 官方文档
- 社区支持:Docker Community Slack、Stack Overflow
参考资源
- 官方镜像文档:PHPMYADMIN Docker 镜像文档
- 镜像标签列表:PHPMYADMIN 镜像标签
- phpMyAdmin 官方网站:https://www.phpmyadmin.net/
- Docker Compose 文档:Docker Compose 官方指南
- 环境变量参考:phpMyAdmin Docker 环境变量
总结
本文详细介绍了 PHPMYADMIN 的 Docker 容器化部署方案,涵盖环境准备、镜像管理、多场景部署、功能验证、生产环境优化及故障排查等内容,为用户提供了标准化、可复用的部署指南。
关键要点:
- 使用轩辕一键脚本快速部署 Docker 环境并自动配置镜像加速
- 区分官方 / 非官方镜像格式,正确使用 library 前缀和加速地址
- 根据业务场景选择合适的部署模式(链接容器 / 外部数据库 / 任意服务器)
- 生产环境需重点关注安全性(HTTPS、敏感信息管理)、持久化配置和资源限制
- 自定义配置通过挂载
config.user.inc.php或conf.d目录实现
后续建议:
- 深入学习 phpMyAdmin 高级特性,如配置存储数据库、查询历史记录和多服务器管理
- 根据实际业务负载调整资源配置参数(内存限制、上传大小、执行时间等)
- 建立完善的监控和更新机制,确保服务稳定性和安全性
- 探索 phpMyAdmin 与 CI/CD 流程的集成,实现数据库变更自动化管理
参考链接:







很久没更新了。
大佬,不知道过了这么久这个脚本还有没有在…
被投诉下线了。
点了那个链接?
被投诉下线了。
https://idea.hacks.t…