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

phpmyadmin docker容器无法访问mariadb数据库问题求助

Docker部署MariaDB+phpMyAdmin连接失败配置修正

问题复现命令

docker rm -f mariadb && docker run --detach --name mariadb --env MARIADB_USER=user --env MARIADB_PASSWORD=secret --env MARIADB_ROOT_PASSWORD=secret -p 3306:3306 mariadb:latest

docker rm -f phpmyadd && docker run --name phpmyadd -d -e PMA_HOST=host -e PMA_PORT=3306 -p 8080:80 phpmyadmin

docker exec -it mariadb  bash

已确认现象

  • 可正常登录mariadb容器,通过mysql -uroot -psecret命令正常访问内部MariaDB服务
  • 可通过http://localhost:8080正常打开phpMyAdmin页面
  • phpMyAdmin登录MariaDB时提示连接失败,宿主机telnet 3306端口无法连通

核心配置问题

  • phpMyAdmin数据库地址配置错误:当前PMA_HOST参数填的是host,这个地址不存在,phpMyAdmin根本找不到数据库服务。Docker容器间通信不能随意填写主机名,需要使用数据库容器的可解析地址。
  • 容器未加入同一互通网络:两个容器默认启动时会接入Docker默认bridge网络,该网络默认不支持容器名直接解析,且无额外连通配置的情况下两个容器无法直接互访。
  • 端口连通性误判:MariaDB首次启动会执行数据初始化操作,耗时几秒到十几秒不等,刚执行完run命令就telnet 3306端口时,服务还没完成启动、未开始监听端口,自然会连通失败;如果等待1分钟以上还是不通,需要检查本地3306端口是否被其他已有服务占用,导致Docker端口映射失效。

修正后可直接运行的配置

  1. 先创建自定义桥接网络,支持容器名自动解析互访:
    docker network create db-net
  2. 启动MariaDB容器,加入自定义网络:
docker rm -f mariadb && docker run --detach --name mariadb --network db-net --env MARIADB_USER=user --env MARIADB_PASSWORD=secret --env MARIADB_ROOT_PASSWORD=secret -p 3306:3306 mariadb:latest
  1. 启动phpMyAdmin容器,加入同一网络,将PMA_HOST修改为MariaDB的容器名mariadb:
docker rm -f phpmyadd && docker run --name phpmyadd -d --network db-net -e PMA_HOST=mariadb -e PMA_PORT=3306 -p 8080:80 phpmyadmin

执行完上述命令后等待10秒左右,待MariaDB初始化完成,再访问phpMyAdmin页面,输入数据库账号密码即可正常登录。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 18:18:51