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

同一网络下无法从其他电脑连接服务器上的MySQL容器求助

解决MySQL容器无法被同网络其他机器访问的问题

1. 检查并授权MySQL用户的远程访问权限

默认MySQL的root用户仅允许从localhost(容器内部或宿主机的127.0.0.1)访问,需修改权限开放远程连接:

  • 从宿主机进入MySQL容器:
    docker exec -it <容器名称或ID> bash
    
    可通过docker ps命令查看容器名称,通常格式为项目名-mysql-1
  • 在容器内登录MySQL:
    mysql -u root -p
    
    输入配置文件中设置的my-password
  • 执行授权命令(二选一):
    -- 允许root从任意IP访问
    GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'my-password' WITH GRANT OPTION;
    -- 或指定特定IP段(更安全),例如192.168.1.0/24网段
    -- GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.1.%' IDENTIFIED BY 'my-password' WITH GRANT OPTION;
    
  • 刷新权限使设置生效:
    FLUSH PRIVILEGES;
    
  • 依次退出MySQL和容器:
    exit
    exit
    

2. 检查服务器防火墙是否开放3306端口

SSH能连接说明22端口已开放,但3306端口可能被防火墙拦截,需手动开放:

  • 若使用ufw(Ubuntu/Debian系统):
    sudo ufw allow 3306/tcp
    sudo ufw reload
    
  • 若使用firewalld(CentOS/RHEL系统):
    sudo firewall-cmd --add-port=3306/tcp --permanent
    sudo firewall-cmd --reload
    

3. 确认Docker端口绑定范围

检查容器端口是否绑定到所有IP(0.0.0.0),而非仅宿主机本地:

  • 执行命令查看端口映射状态:
    docker ps
    
    查看PORTS列,需显示0.0.0.0:3306->3306/tcp或:::3306->3306/tcp;若显示127.0.0.1:3306->3306/tcp,说明仅宿主机能访问,需修改docker-compose.yml的ports配置:
    ports:
      - "0.0.0.0:3306:3306"
    
  • 重启容器使配置生效:
    docker-compose down && docker-compose up -d
    

完成上述步骤后,重新从同网络其他机器尝试连接即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 07:25:14