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

Docker Compose部署下API容器无法访问MySQL容器求助

问题:Docker Compose部署MySQL与API服务器,API连接MySQL时提示访问拒绝

问题详情

我用Docker Compose同时运行MySQL和API服务器,API启动后尝试连接MySQL,却一直收到访问拒绝的提示。我已经在MySQL初始化阶段添加了权限授予的SQL语句,但问题还是没解决。

错误日志

2018-05-03T05:48:45.868146Z 2 [Note] Access denied for user 'mysql'@'172.18.0.3' (using password: YES)

我的Docker Compose配置(部分)

version: "3.6"
services:
  mysql:
    build:
      context: ..
      dockerfile: docker/Dockerfile-mysql
    image: test_mysql:ci-label
    container_name: test-mysql-ci-label
    # 剩余配置未完整提供

排查与解决方案

我来帮你一步步排查这个问题,从最常见的原因入手:

1. 先确认权限授予语句是否正确

从错误日志看,你的API容器IP是172.18.0.3,用的用户名是mysql。首先要确保你的权限语句覆盖了这个用户和IP,或者允许该用户从任意IP访问(更适合Docker环境,因为容器IP可能随重启变化):

-- 推荐:允许mysql用户从任意IP访问所有数据库
GRANT ALL PRIVILEGES ON *.* TO 'mysql'@'%' IDENTIFIED BY '你的数据库密码' WITH GRANT OPTION;
-- 必须刷新权限才能生效
FLUSH PRIVILEGES;

如果你的API容器IP固定,也可以精准指定:

GRANT ALL PRIVILEGES ON *.* TO 'mysql'@'172.18.0.3' IDENTIFIED BY '你的数据库密码' WITH GRANT OPTION;
FLUSH PRIVILEGES;

2. 检查初始化脚本是否真的执行了

Docker MySQL容器只会在第一次启动且数据卷为空时,执行/docker-entrypoint-initdb.d/目录下的初始化脚本。如果你之前已经启动过MySQL容器,数据卷里已经有现成的数据库,新的权限脚本根本不会运行。

解决方法:

  • 先删除MySQL的数据卷(注意备份重要数据!):
    docker-compose down -v
    
  • 重新构建并启动容器:
    docker-compose up --build
    

3. 验证API的连接配置是否正确

别忽略最基础的配置错误:

  • 主机地址:API连接MySQL时,应该用Docker Compose里的服务名mysql,而不是固定IP(Docker内部DNS会自动解析服务名到对应容器IP,避免IP变化的问题)
  • 用户名/密码:确认和权限语句里的mysql用户、密码完全一致,没有大小写或拼写错误
  • 端口:确保MySQL容器暴露的端口是3306(默认),API连接时用的是这个端口

4. 手动检查MySQL内的权限记录

进入MySQL容器,直接查看用户权限是否生效:

# 进入MySQL容器,输入root密码登录
docker exec -it test-mysql-ci-label mysql -u root -p

登录后执行查询:

SELECT user, host FROM mysql.user;

看看结果里有没有mysql用户对应的%或172.18.0.3主机记录。如果没有,说明初始化脚本没执行,或者语句写错了。

5. 确认两个容器在同一个网络

默认情况下,Docker Compose会给所有服务创建一个默认网络,确保它们能互相访问。如果你自定义了网络,一定要确认API和MySQL都加入了同一个网络:

version: "3.6"
services:
  mysql:
    # ...其他配置
    networks:
      - app-network
  api:
    # ...其他配置
    networks:
      - app-network
# 定义自定义网络
networks:
  app-network:
    driver: bridge

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:36:57