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

使用PDO连接Docker部署的MySQL数据库时持续出现Access Denied错误

使用PDO连接Docker部署的MySQL数据库时持续出现Access Denied错误

嘿,我一下子就揪出问题根源啦!你的Docker Compose配置里犯了个MySQL官方镜像的常见小错误——非root用户的环境变量名是MYSQL_USER,不是MYSQL_USERNAME,这直接导致admin用户根本没被正确创建,自然就会出现访问被拒绝的情况!

第一步:修正Docker Compose的DB服务配置

把MYSQL_USERNAME改成MYSQL_USER即可,修正后的配置如下:

db:
    image: mysql:latest
    restart: always
    volumes:
      - ./database:/var/lib/mysql    
    environment:
      MYSQL_ROOT_PASSWORD: "root"
      MYSQL_DATABASE: "my_local_db"
      MYSQL_USER: "admin"  # 这里是官方镜像要求的正确变量名
      MYSQL_PASSWORD: "admin"
    ports:
      - 3306:3306

第二步:清理旧数据卷(必须做!)

因为你之前已经创建过./database本地卷,里面可能残留了错误的用户配置数据,所以需要先彻底清理再重启服务:

# 停止容器并删除关联的卷
docker-compose down -v
# 重新启动所有服务
docker-compose up -d

额外验证步骤(如果还是有问题的话)

  1. 你的PHP连接代码参数是完全正确的:host=db(和Compose里的服务名对应)、用户名admin、密码admin、数据库名my_local_db,这部分不用改。
  2. 可以用root用户登录MySQL容器,手动确认用户和数据库是否存在:
# 进入运行中的MySQL容器
docker exec -it [你的DB容器名称] mysql -uroot -proot
# 检查admin用户是否存在
SELECT User, Host FROM mysql.user;
# 检查目标数据库是否存在
SHOW DATABASES;

这样修改后,应该就能顺利连接到数据库啦!

备注:内容来源于stack exchange,提问作者TripleA

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.15 10:07:57