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

如何解决Digital Ocean应用平台Directus连接外部MySQL数据库失败问题?

在DigitalOcean应用平台连接Directus到外部MySQL数据库及排障指南

一、DigitalOcean应用平台上Directus连接外部MySQL的配置步骤

  • 确认外部MySQL数据库的网络可达性:将DigitalOcean应用平台的出站IP添加到MySQL数据库的安全组白名单,同时确保MySQL用户允许从该IP段连接。
  • 在DigitalOcean应用平台的Directus部署中配置以下核心环境变量:
    • DB_CLIENT=mysql
    • DB_HOST=<你的MySQL服务器IP/域名>
    • DB_PORT=3306(默认端口,若修改过则填对应值)
    • DB_DATABASE=<目标数据库名称>
    • DB_USER=<数据库授权用户名>
    • DB_PASSWORD=<数据库用户密码>
    • 若MySQL启用SSL,补充配置DB_SSL=true;使用自签名证书时,需添加DB_SSL_CA=<证书文件内容>
  • 触发Directus应用重新部署:在DO应用平台操作界面点击重新部署,让新的环境变量生效。

二、Docker部署Directus后无法连接数据库的排障步骤

  • 核对环境变量准确性:进入Directus容器执行命令printenv | grep DB_,检查所有数据库相关变量的拼写、值是否正确,注意密码中的特殊字符(如@、$)是否在DO平台正确转义。
  • 测试网络连通性:在容器内执行telnet <DB_HOST> <DB_PORT>或nc -zv <DB_HOST> <DB_PORT>,若连接失败,排查:
    • MySQL服务器的防火墙/安全组是否开放3306端口给DigitalOcean应用的出站IP
    • 若为内网数据库,确认DO应用是否处于同一网络环境,或已通过专线/VPN打通网络
  • 检查MySQL权限与状态:
    • 登录MySQL服务器,执行SELECT user, host FROM mysql.user;,确认所用用户允许从DO应用的IP连接(如user@'%'允许任意IP)
    • 执行SHOW GRANTS FOR '<DB_USER>'@'<允许的IP>';,确认用户拥有目标数据库的全量操作权限(SELECT、INSERT、UPDATE、DELETE、CREATE、ALTER、DROP等)
    • 确认目标数据库已存在:执行SHOW DATABASES LIKE '<DB_DATABASE>';
  • 排查SSL配置问题:
    • 若启用了DB_SSL=true,登录MySQL执行SHOW VARIABLES LIKE '%ssl%';确认SSL已开启
    • 若使用自签名证书,需确保证书文件已挂载到Directus容器内,且DB_SSL_CA指向容器内的证书路径
  • 查看Directus应用日志:在DO应用平台查看Directus的日志输出,搜索connection、database关键词,根据具体错误信息定位(如Access denied对应权限问题,Timeout对应网络问题)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 16:33:14