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

Docker phpMyAdmin容器“Access denied for user 'root'”问题求助

解决phpMyAdmin访问MySQL时"Access denied for user 'root'"的问题

嘿,我来帮你排查这个权限错误的问题,咱们一步步梳理配置里的问题:

1. 先修正MySQL的环境变量配置

你在MySQL服务里设置了MYSQL_USER: root,但这个变量是用来创建新的普通用户的,root是MySQL默认自带的超级用户,根本不需要用这个变量去创建。这个多余的配置反而可能搞乱root用户的权限或者密码,直接把它删掉就好。

修改后的MySQL环境变量部分应该是这样:

environment:
  MYSQL_ROOT_PASSWORD: root_pass

2. 调整phpMyAdmin的配置细节

首先,你原来的restart: ...是不完整的,得改成具体的重启策略,比如restart: always,这样容器意外退出后能自动重启。另外,phpMyAdmin的官方镜像更推荐用PMA_USER和PMA_PASSWORD来设置默认登录的用户;当然你也可以手动在登录界面输入,但得确保密码传递正确。还有个关键问题:你没给phpMyAdmin加端口映射!这会导致你根本没法通过Droplet的IP访问它,一定要加上ports: - 8080:80。

修改后的phpMyAdmin服务配置:

phpmyadmin:
  image: phpmyadmin/phpmyadmin
  container_name: phpmyadmin
  links:
    - mysql:db
  environment:
    PMA_USER: root
    PMA_PASSWORD: root_pass
    # 要是想手动输入账号密码,也可以换成下面这俩配置
    # PMA_HOST: mysql
    # PMA_ROOT_PASSWORD: root_pass
  restart: always
  ports:
    - 8080:80

3. 清理旧数据卷,重新初始化MySQL

因为之前的错误配置可能已经在mysqldata数据卷里留下了有问题的用户数据,所以得先清理掉这个卷,让MySQL重新初始化:

执行这几条命令:

# 停止并删除现有容器
docker-compose down
# 删除MySQL的数据卷(替换成你的项目目录名,Docker会自动给卷加前缀)
docker volume rm 你的项目目录名_mysqldata
# 重新启动容器
docker-compose up -d

4. 最后验证连接

重启容器后,访问http://你的DropletIP:8080,用root和密码root_pass登录,应该就能正常进phpMyAdmin了。如果还是有问题,咱们可以进MySQL容器查一下用户权限:

# 进入MySQL容器
docker exec -it 你的项目目录名_mysql_1 mysql -uroot -proot_pass
# 查看root用户的允许访问主机
SELECT user, host FROM mysql.user;

要是root用户的host不是%(代表允许远程连接),就执行下面的SQL语句修改:

ALTER USER 'root'@'%' IDENTIFIED BY 'root_pass';
FLUSH PRIVILEGES;

给你贴个完整的可用docker-compose.yml参考:

version: '2.1'
services:
  mysql:
    build:
      context: ./docker/mysql
    image: mysql:latest
    ports:
      - 3306:3306
    environment:
      MYSQL_ROOT_PASSWORD: root_pass
    volumes:
      - mysqldata:/var/lib/mysql
    restart: always
  phpmyadmin:
    image: phpmyadmin/phpmyadmin
    container_name: phpmyadmin
    links:
      - mysql:db
    environment:
      PMA_USER: root
      PMA_PASSWORD: root_pass
    restart: always
    ports:
      - 8080:80
volumes:
  mysqldata:

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 07:08:44