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

Docker容器无法连接宿主机MariaDB问题求助

解决Docker Nextcloud连接宿主机MariaDB拒绝问题

可能的原因及对应解决方案

1. MariaDB仅绑定本地回环地址

默认情况下MariaDB可能只监听127.0.0.1,导致Docker容器无法访问:

  • 编辑MariaDB配置文件(通常是/etc/mysql/mariadb.conf.d/50-server.cnf或/etc/my.cnf)
  • 找到bind-address配置项,改为0.0.0.0(允许所有地址监听)或宿主机的内网IP
  • 重启MariaDB服务:sudo systemctl restart mariadb

2. UFW防火墙阻止容器访问3306端口

Ubuntu默认启用UFW,可能未开放Docker子网访问3306端口:

  • 添加允许规则,针对Docker默认子网(172.17.0.0/16):
    sudo ufw allow from 172.17.0.0/16 to any port 3306
    
  • 重载UFW生效:sudo ufw reload

3. MariaDB用户未授权远程访问权限

数据库用户可能仅允许localhost登录,需要授权容器所在网段访问:

  • 登录MariaDB:sudo mysql -u root -p
  • 执行授权命令(替换nextcloud_user、your_password、nextcloud_db为实际信息):
    GRANT ALL PRIVILEGES ON nextcloud_db.* TO 'nextcloud_user'@'%' IDENTIFIED BY 'your_password';
    FLUSH PRIVILEGES;
    
    若想更严格,可将%替换为Docker子网(如172.17.0.0/255.255.0.0)

4. 验证容器与宿主机的网络连通性

先确认容器能通宿主机3306端口:

  • 进入Nextcloud容器:docker exec -it <your_nextcloud_container_name> /bin/bash
  • 安装telnet(若未安装):apt update && apt install telnet
  • 测试端口连通:telnet 172.17.0.1 3306
    • 若连接失败,说明是网络/防火墙问题;若能连接,再检查数据库用户名密码和权限

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 10:50:15