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

Apache Superset(Docker部署)连接MySQL提示端口关闭问题求助

解决Docker部署的Superset无法连接AlmaLinux8本地MySQL的问题

以下是针对性的排查和解决步骤:

  • 修改MySQL绑定地址
    默认MySQL仅绑定127.0.0.1,容器无法访问。编辑MySQL配置文件(通常在/etc/my.cnf或/etc/my.cnf.d/mysql-server.cnf),找到bind-address项,修改为0.0.0.0或主机的内网IP:

    bind-address = 0.0.0.0
    

    保存后重启MySQL服务:

    systemctl restart mysqld
    
  • 授权MySQL用户跨网络访问
    确保你的MySQL用户允许从容器所在网段或任意地址访问。登录MySQL执行:

    -- 生产环境建议限制具体网段,此处示例为允许任意地址访问
    GRANT ALL ON 你的数据库名.* TO '你的用户名'@'%' IDENTIFIED BY '你的密码';
    FLUSH PRIVILEGES;
    
  • 开放主机防火墙端口
    AlmaLinux8默认使用firewalld,需开放MySQL的3306端口:

    firewall-cmd --add-port=3306/tcp --permanent
    firewall-cmd --reload
    

    若要更安全,可仅允许Docker默认网段(如172.17.0.0/16)访问:

    firewall-cmd --add-source=172.17.0.0/16 --permanent
    firewall-cmd --reload
    
  • 测试容器内网络连通性
    进入Superset容器,测试与主机MySQL的连通性:

    # 替换为你的Superset容器名或ID
    docker exec -it superset_app bash
    # 测试端口连通情况
    telnet 你的主机内网IP 3306
    

    若telnet不通,说明网络层面存在阻塞,需回到防火墙或绑定地址环节排查。

  • 修复Linux上的host.docker.internal问题
    Linux环境下Docker默认不支持host.docker.internal,需在启动容器时添加额外主机映射:

    • 单容器启动:
      docker run --add-host=host.docker.internal:host-gateway ... 其他启动参数
      
    • 使用docker-compose:
      在docker-compose.yml的Superset服务配置中添加:
      extra_hosts:
        - "host.docker.internal:host-gateway"
      

    修改后重启容器即可生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 04:12:43