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

Docker挂载数据卷后phpMyAdmin连接MySQL容器遇权限拒绝问题

解决MySQL容器挂载数据卷后phpMyAdmin登录被拒绝的问题

问题分析

挂载本地数据卷后出现Access denied for user 'root'@'172.18.0.3',核心原因有两个:

  • 本地挂载的%cd%\mysql目录中存在旧的MySQL数据文件,其中root用户的权限仅限制在localhost/127.0.0.1,未授权容器网络内的IP访问
  • 首次挂载空目录初始化时,MySQL默认的root用户仅允许本地登录,无法跨容器网络访问

解决方案

方案1:清理旧数据重新初始化(最简单直接)

  1. 停止并删除现有容器:
    docker stop some-mysql pma
    docker rm some-mysql pma
    
  2. 删除本地挂载目录的所有内容(Windows命令提示符):
    rmdir /s /q %cd%\mysql
    mkdir %cd%\mysql
    
  3. 重新创建两个容器:
    docker run --rm --name some-mysql --network mynet -e MYSQL_ROOT_PASSWORD=password -v %cd%\mysql:/var/lib/mysql -d mysql
    docker run -d --rm --name pma --network mynet -p 8080:80 -e PMA_HOST=some-mysql -e UPLOAD_LIMIT=128M phpmyadmin
    
    此时MySQL会重新初始化数据,自动适配容器网络环境给root用户授权跨容器访问权限。

方案2:手动授权root用户远程访问(保留现有数据)

如果不想删除现有数据,可进入MySQL容器修改用户权限:

  1. 进入MySQL容器的命令行:
    docker exec -it some-mysql mysql -uroot -ppassword
    
  2. 在MySQL控制台执行授权语句(二选一即可):
    -- 允许root从任意IP登录(适配容器网络动态IP场景)
    GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION;
    -- 仅允许指定IP登录(比如报错信息里的172.18.0.3)
    -- GRANT ALL PRIVILEGES ON *.* TO 'root'@'172.18.0.3' IDENTIFIED BY 'password' WITH GRANT OPTION;
    
  3. 刷新权限使设置生效:
    FLUSH PRIVILEGES;
    
  4. 退出MySQL控制台后,重启phpMyAdmin容器即可登录:
    docker restart pma
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 10:13:17