mysql 8.0 连不上、phpmyadmin 登录失败、数据重启丢失的核心问题在于认证插件不兼容(caching_sha2_password vs mysql_native_password)、网络隔离导致 dns 解析失败(pma_host 未设为服务名)、卷挂载路径错误或权限不足(宿主机目录非空/uid 不匹配/windows 路径转换异常)。

docker-compose up -d 就能跑起来,但直接套模板常连不上、进不去 phpMyAdmin、数据一删就丢——核心问题不在命令本身,而在 MySQL 8.0 的认证插件、网络隔离和卷挂载路径这三处。
MySQL 8.0 连不上?检查 default_authentication_plugin
MySQL 8.0 默认用 caching_sha2_password,而 phpMyAdmin(尤其旧版镜像)只认 mysql_native_password。不显式指定,就会卡在登录页报“Access denied”或空白响应。
- 必须在
mysql服务的command或环境变量中强制覆盖:--default-authentication-plugin=mysql_native_password - 仅设
MYSQL_ROOT_PASSWORD不够,command项优先级高于环境变量,推荐写在command里 - 如果用自定义
my.cnf挂载,也要确保文件里有default_authentication_plugin=mysql_native_password这一行
phpMyAdmin 打不开或报“Cannot log in to the MySQL server”
这不是密码错,而是网络没通——Docker Compose 默认为每个 services 创建独立网络,但 phpmyadmin 容器必须通过服务名(不是 localhost)访问 mysql 容器。
-
PMA_HOST必须设为mysql(即mysql服务的service name),不能写127.0.0.1或localhost -
PMA_PORT设为3306(容器内端口),不是宿主机映射的3306 - 两个服务必须共用同一自定义网络(如
mynetwork),不能依赖默认网络——否则depends_on只控制启动顺序,不解决 DNS 解析 - 确认
phpmyadmin镜像版本:phpmyadmin/phpmyadmin:5或latest均支持 MySQL 8.0,但避免用带-apache后缀的老镜像
数据重启就丢?卷路径和权限是关键
volumes 映射错位置或宿主机目录权限不对,会导致 MySQL 启动失败或静默丢数据——日志里只显示 mysqld: Can't start server,没具体原因。
- MySQL 容器内数据目录固定为
/var/lib/mysql,宿主机映射路径必须指向**空目录**或已有合法 MySQL 数据目录,不能是文件或非空但非 MySQL 初始化过的目录 - Windows 用户注意路径写法:
./mysql-data可行,但E:\data\mysql在 Docker Desktop + WSL2 下会因路径转换失败,统一用相对路径 - Linux/macOS 上,若宿主机目录属主不是 UID 999(MySQL 容器默认用户),启动会失败;可加
user: "999:999"或提前chown -R 999:999 ./mysql-data - 别用
docker volume create后再手动绑定——docker-compose.yml里的volumes字段直接写路径更可控
端口冲突和 Windows 文件权限容易被忽略
Windows 上常见两个隐形坑:一是宿主机 3306 或 80 端口被占用(Skype、IIS、其他 MySQL 实例),二是 WSL2 子系统对 Windows 路径的写权限受限。
- 启动前先查端口:
netstat -ano | findstr :3306和netstat -ano | findstr :80,杀掉 PID - 不要把
docker-compose.yml放在 OneDrive、腾讯微云等同步目录下——这些软件会锁文件,导致 Docker 写入mysql-data失败 - 如果用 PowerShell 执行
docker-compose up -d报权限错误,换到 Windows Terminal(以管理员运行)或改用 Git Bash - 第一次启动后立刻执行
docker logs mysql,看是否有Initialization of mysqld failed类提示,这是卷或配置出问题最直接的信号
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











