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

docker-compose部署phpMyAdmin连接MySQL遇1045权限拒绝错误

phpMyAdmin连接MySQL容器报1045访问拒绝错误的解决方案

问题背景

本地运行以下Docker Compose配置时,phpMyAdmin登录MySQL容器失败,出现访问拒绝错误。

docker-compose.yml 配置

networks:
    mynet:
        name: mynet
        driver: bridge
services:
    mydb:
        container_name: mydb
        image: mysql:8.4.2
        hostname: mydb
        restart: unless-stopped
        environment:
            MYSQL_ROOT_PASSWORD: ${ROOT_PASSWORD}
            MYSQL_DATABASE: default_db
        networks:
            - mynet
        volumes:
            - ${DATA_VOLUME}:/var/lib/mysql
        ports:
            - ${EXPOSE_PORT}:3306

    myadmin:
        container_name: myadmin
        image: phpmyadmin/phpmyadmin:5.2.1
        hostname: myadmin
        depends_on:
            - mydb
        restart: unless-stopped
        environment:
            PMA_HOST: mydb
            # PMA_PORT: 3306 - 我也尝试过添加这个参数
            # PMA_ARBITRARY: 1 - 我也尝试过添加这个参数
            # MYSQL_USERNAME: "root" - 我也尝试过添加这个参数
            MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
        networks:
            - mynet
        ports:
            - ${PMA_EXPOSE_PORT}:80

.env 配置

ROOT_PASSWORD=mystrongpwd
DATA_VOLUME=/path/to/my/colume
EXPOSE_PORT=3333
PMA_EXPOSE_PORT=4444

错误提示

mysqli::real_connect(): (HY000/1045): Access denied for user 'root'@'172.26.0.12' (using password: YES)

更新说明:
此前有用户将此问题与“启用远程MySQL连接:ERROR 1045 (28000): Access denied for user”的问题混淆并关闭,但该问题的解决方案并不适用。以下是我找到的可行解决办法:


解决步骤

问题根源是环境变量名称不匹配:

  • MySQL容器使用${ROOT_PASSWORD}作为root用户密码
  • phpMyAdmin容器中配置的是${MYSQL_ROOT_PASSWORD},但.env文件里并未定义这个变量,导致phpMyAdmin传递了错误的密码给MySQL服务。

有两种修改方式:

  1. 修改phpMyAdmin的环境变量,将MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}改为MYSQL_ROOT_PASSWORD: ${ROOT_PASSWORD},保持和MySQL容器使用同一个变量。修改后的myadmin服务环境变量部分:
environment:
    PMA_HOST: mydb
    MYSQL_ROOT_PASSWORD: ${ROOT_PASSWORD}
  1. 在.env文件中添加MYSQL_ROOT_PASSWORD=mystrongpwd,确保该变量值和ROOT_PASSWORD一致。

修改完成后,重启容器使配置生效:

docker-compose down
docker-compose up -d

重启后即可正常通过phpMyAdmin登录MySQL容器。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 06:22:23