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

Docker容器连接MySQL遇1045错误:Access denied for user 'root'@'172.19.0.2'

问题描述

运行Docker容器时遭遇MySQL访问拒绝错误,日志详情如下:

2022-12-21 22:49:28 Running Rboxlo on port 80
2022-12-21 22:49:28 SqlError: (conn=6, no: 1045, SQLState: 28000) Access denied for user 'root'@'172.19.0.2' (using password: YES)
2022-12-21 22:49:28   text: "(conn=6, no: 1045, SQLState: 28000) Access denied for user 'root'@'172.19.0.2' (using password: YES)",
2022-12-21 22:49:28   sql: null,
2022-12-21 22:49:28   fatal: true,
2022-12-21 22:49:28   errno: 1045,
2022-12-21 22:49:28   sqlState: '28000',
2022-12-21 22:49:28   code: 'ER_ACCESS_DENIED_ERROR'
2022-12-21 22:49:28 }

当前.env文件配置:

# Database  
DB_PASSWORD=passhere 
DB_USERNAME=root 
DB_NAME=rboxlo

已通过phpMyAdmin创建对应数据库,但Docker容器无法连接数据库,导致注册页面无限加载。

解决方案

1. 修正MySQL用户权限

错误提示root@172.19.0.2无访问权限,说明root用户未授权从Docker容器所在子网访问数据库:

  • 进入MySQL容器(或本地MySQL实例),执行授权SQL:
GRANT ALL PRIVILEGES ON rboxlo.* TO 'root'@'172.19.%' IDENTIFIED BY 'passhere';
FLUSH PRIVILEGES;

172.19.%匹配容器所在的子网段,确保容器IP在该范围内。

2. 规范.env文件格式

将配置变量拆分到单独行,避免解析异常:

# Database
DB_PASSWORD=passhere
DB_USERNAME=root
DB_NAME=rboxlo

同时确保Docker容器正确加载该文件:使用docker-compose.yml的env_file字段,或启动容器时添加--env-file参数。

3. 核对数据库连接主机

如果使用docker-compose编排服务,应用的数据库主机需指向MySQL容器的服务名(而非localhost)。例如docker-compose中MySQL服务名为db,则应用配置的数据库主机应设为db。

4. 重置MySQL容器初始化数据

若使用官方MySQL镜像,需确认启动时已配置正确的环境变量:

services:
  db:
    image: mysql:latest
    environment:
      MYSQL_ROOT_PASSWORD: passhere
      MYSQL_DATABASE: rboxlo
    volumes:
      - db_data:/var/lib/mysql

若之前容器已启动过,需删除旧数据卷重新初始化:

docker-compose down -v
docker-compose up -d

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 00:20:38