一般在Docker环境下,为了方便快速管理mysql,可能会直接在docker配置文件里启动一个phpmyadmin容器,这个容器确实方便,但是需要注意phpmyadmin容器为了方便使用,自身直接集成了 apache + php 的web环境。
phpMyAdmin (PMA) 属于“重量级”工具。对于一个只需要管理数据库的场景,它运行了一整套 Apache 服务器和 PHP 环境,这在容器化时代显得有些“大炮轰蚊子”。
docker-compose.yml 里 :
5.phpmyadmin管理 phpmyadmin: image: phpmyadmin:latest container_name: phpmyadmin_service restart: always environment: - PMA_HOST=db # 默认连接到你的 MySQL 容器 ports: - "60082:80"
启动容器后,直接 ip:60082 访问管理就可以了。
但是进入后,却发现网站服务器:

Apache/2.4.66 (Debian) 数据库客户端版本: libmysql - mysqlnd 8.3.30 PHP 扩展: mysqli, curl, mbstring, sodium PHP 版本: 8.3.30
phpmyadmin容器自己就集成了 Apache/2.4.66 (Debian)、PHP 8.3.30,内存占用了100-200MB,太重,浪费内存资源。
飘易,不建议直接采用 phpmyadmin容器的方式。一个用来“看”数据库的工具,占用的内存竟然能达到数据库本身的 1/4 甚至 1/3,这在追求高并发或低配服务器(如 1核2G)上是非常不划算的。
可以考虑:
本地方案:本地安装 Navicat 或 DBeaver。
优势: 零服务器资源占用。本地软件操作丝滑,支持 SQL 智能提示。
如果偶尔需要网页操作,换成 Adminer。
理由: 只有一个 .php 文件,即插即用,不用时直接删掉或关掉容器,没有任何心理负担。
NPM反代一个目录,利用现成的php容器
理由:不增加额外的资源消耗,仅上传一个管理文件夹
这里采用NPM反代方案。
因为容器一般已经集成了 nginx proxy manager + php,所以我们可以直接NPM里新开一个反代目录即可。
先在宿主机 wwwroot 目录下创建目录:
/phpmyadmin/__pma1234/
pma的具体目录建议设置一个不易猜出的目录,比如 __pma12342h09
从官网下载:https://www.phpmyadmin.net/downloads/
phpMyAdmin 5.2.3 Released October 8, 2025. See release notes for details. Current version compatible with PHP 7.2 and newer and MySQL/MariaDB 5.5 and newer.
下载pma,解压到上面的 __pma1234 目录。
config.sample.inc.php 配置文件 改名为 config.inc.php,修改:
$cfg['blowfish_secret'] = '这里设置32位长度的随机字符串'; $cfg['Servers'][$i]['host'] = 'db';// 这里docker容器用db ,不用默认的localhost
NPM新开一个反代:
Details 选项卡:
域名:填公网IP
协议:http
转发主机名 / IP:php74_service (php容器)
转发端口:9000
Locations 选项卡:啥也不填。
Settings 选项卡(齿轮图标):
location /__pma1234 {
# 根目录指向父目录
root /www/phpmyadmin;
index index.php;
location ~ \.php$ {
fastcgi_pass php74_service:9000;
fastcgi_index index.php;
# 核心
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
# 强制重置一些可能导致 PHP 误解的参数
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
# php隔离
fastcgi_param PHP_VALUE "open_basedir=/www/phpmyadmin/:/tmp/";
}
}配置后,重启下php容器:
docker restart php74_service
后续就可以用 ip/__pma1234/ 进入管理了,如果不需要,也可以随时删除文件夹。平时也不额外占用内存,浪费资源。
但是请留意:
不管容器部署的方式,还是NPM反代的方式,phpmyadmin 5 目前对用户的权限管理可能有bug,登录后会提示你:“ 您没有权限管理用户!”

即使你按照要求创建pma要求的数据库(create_tables.sql),对应的用户(This user "pma" must be defined in config.inc.php (controluser/controlpass)),pma还是会提示:您没有权限管理用户!这可能是一个BUG。
但是正常的创建数据库,导入导出SQL等功能是正常的。
那怎么管理创建用户呢?
通过docker进入mysql容器 或直接在 pma 顶部SQL窗口里执行命令:
docker exec -it mysql_db mysql -u root -p (系统提示输入密码) -- 第一步:创建用户并设置密码 CREATE USER '用户名'@'%' IDENTIFIED BY '密码'; -- 第二步:授予指定数据库的所有权限(不带 WITH GRANT OPTION 就不具备授权权限) GRANT ALL PRIVILEGES ON 目标库.* TO '用户名'@'%'; -- 第三步:刷新权限表 FLUSH PRIVILEGES;
查询授权:
SHOW GRANTS FOR 'root'@'%'; 返回: GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION SHOW GRANTS FOR 'audi'@'%'; 返回: GRANT USAGE ON *.* TO 'audi'@'%' GRANT ALL PRIVILEGES ON `audi`.* TO 'audicom'@'%'
docker里通过命令创建用户并授权指定库的操作权限就可以了。