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

Docker环境下Mage.AI连接容器化MySQL失败的解决咨询

解决Mage.AI容器连接Docker中MySQL容器的问题

问题核心原因

  1. 容器网络隔离:Docker容器内的localhost指向容器自身,而非宿主机,所以Mage.AI配置里写localhost无法访问到local-mysql容器。
  2. 端口异常:错误信息里的33060大概率是配置解析异常导致的,结合你的启动命令,重点还是网络连通性问题。

具体解决方案

方案1:用Docker容器名作为主机地址(推荐)

Docker默认bridge网络下,容器可通过容器名互相访问,步骤如下:

  1. 修改Mage.AI数据库配置:
    将host字段值从localhost改为local-mysql,其他配置保持不变:
    database: kdtestdb
    host: local-mysql
    port: 3306
    username: root
    password: mypassword
    connection_method: direct
    ssh_host: null
    ssh_port: 22
    ssh_username: null
    ssh_password: null
    ssh_pkey: null
    
  2. 重启Mage.AI容器,让配置生效。
  3. 授权MySQL远程访问:默认MySQL容器的root用户仅允许本地连接,需进入容器修改权限:
    先进入MySQL容器:
    docker exec -it local-mysql mysql -uroot -pmypassword
    
    执行授权SQL(如果kdtestdb未创建,先执行CREATE DATABASE kdtestdb;):
    GRANT ALL PRIVILEGES ON kdtestdb.* TO 'root'@'%' IDENTIFIED BY 'mypassword';
    FLUSH PRIVILEGES;
    

方案2:用宿主机IP作为主机地址

如果容器不在同一默认网络,可直接用宿主机局域网IP:

  1. 获取宿主机IP:Linux/macOS用ip addr或ifconfig,Windows用ipconfig找到对应网卡的IP(比如192.168.1.100)。
  2. 修改Mage.AI配置:将host改为宿主机IP,端口保持3306。
  3. 同样执行MySQL远程授权:同方案1的步骤3。

方案3:自定义Docker网络(更稳定)

创建专属网络避免默认bridge的潜在问题:

  1. 创建自定义网络:
    docker network create mage-mysql-net
    
  2. 重新启动MySQL容器并加入网络:
    docker stop local-mysql
    docker rm local-mysql
    docker run --name local-mysql --network mage-mysql-net -e MYSQL_ROOT_PASSWORD=mypassword -p 3306:3306 -d mysql:latest
    
  3. 重启Mage.AI容器加入同一网络:找到Mage.AI的启动命令,添加--network mage-mysql-net参数后重启。
  4. 修改Mage.AI配置:host设为local-mysql,端口3306,同方案1。

额外检查项

  • 确认kdtestdb数据库已存在,若未创建,进入MySQL容器执行CREATE DATABASE IF NOT EXISTS kdtestdb;。
  • 检查宿主机防火墙是否阻止了3306端口(用宿主机IP连接时)。
  • 确认两个容器均处于运行状态:执行docker ps查看容器状态。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 10:10:12