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

Docker部署Laravel应用遇SQLSTATE[HY000][1045]权限拒绝错误求助

Laravel容器化MySQL权限拒绝问题解决

尝试将Laravel应用容器化时,遇到MySQL权限拒绝错误:SQLSTATE[HY000] [1045] Access denied for user 'user'@'172.18.0.3',同时用phpMyAdmin以用户名user、密码password登录时也提示权限拒绝。相关配置如下:

docker-compose.yml

version: "3.8"
services:

    # Database Server
    database:
        image: mysql:8.4.0
        ports:
            -   3306:3306
        environment:
            - MYSQL_DATABASE="${DB_DATABASE}"
            - MYSQL_USER="${DB_USERNAME}"
            - MYSQL_PASSWORD=password
        volumes:
            - db-data:/var/lib/mysql

    # PHP Service
    php:
        build:
            context: .
            target: php
            args:
                - APP_ENV="${APP_ENV}"
        environment:
            - APP_ENV="${APP_ENV}"
            - CONTAINER_ROLE=app
        working_dir: /var/www
        volumes:
            - ./:/var/www
        ports:
            - 8000:8000
        depends_on:
            - database
            
    
    phpmyadmin:
        image: phpmyadmin
        restart: always
        ports:
          - 8080:80
        environment:
          - PMA_ARBITRARY=1

volumes:
    db-data: ~

.env

DB_CONNECTION=mysql
DB_HOST=database
DB_PORT=3306
DB_DATABASE=my_database
DB_USERNAME=user
DB_PASSWORD=password

解决方案

1. 完善MySQL环境配置

MySQL 8.x镜像初始化时必须设置MYSQL_ROOT_PASSWORD,否则会导致用户权限初始化异常。同时建议将MYSQL_PASSWORD改为引用.env变量,避免硬编码不一致:

修改docker-compose.yml中database服务的environment部分:

environment:
    - MYSQL_ROOT_PASSWORD=rootpassword # 添加root用户密码
    - MYSQL_DATABASE="${DB_DATABASE}"
    - MYSQL_USER="${DB_USERNAME}"
    - MYSQL_PASSWORD="${DB_PASSWORD}" # 引用.env中的密码变量

2. 清理旧数据库卷

已创建的db-data卷可能残留了未正确配置的用户数据,需删除后重新初始化:

# 停止并移除现有容器
docker-compose down
# 删除数据库数据卷(替换<项目目录名>为你的实际项目文件夹名称)
docker volume rm <项目目录名>_db-data
# 重新启动并初始化容器
docker-compose up -d

3. 验证登录与连接

  • phpMyAdmin登录:访问http://localhost:8080,主机填写database,用户名输入user,密码输入password即可登录;也可使用root用户(用户名root,密码rootpassword)验证。
  • Laravel连接测试:进入PHP容器执行迁移命令验证数据库连接:
docker-compose exec php php artisan migrate

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 05:48:20