Directus连接MySQL报connection refused错误,本地命令可正常连接
解决Directus容器连接本地MySQL时的
connection refused错误 问题根源:Docker容器内的
localhost指向容器自身,而非宿主机。你本地命令行能正常连接MySQL,是因为直接访问了宿主机的服务,但Directus容器里的localhost无法定位到宿主机的MySQL进程。修复方案:
- 修正DB_HOST配置:
- Linux/macOS/Windows(Docker Desktop环境):将
docker-compose.yml中的DB_HOST: 'localhost'改为DB_HOST: 'host.docker.internal'(Docker内置的宿主机别名); - 也可直接填写宿主机的局域网IP(如
192.168.1.100),但需确保MySQL监听该IP地址。
- Linux/macOS/Windows(Docker Desktop环境):将
- 清理无效环境变量:删除Directus服务下的
MYSQL_*系列配置项(这些是MySQL容器专属的环境变量,Directus容器不需要):MYSQL_ROOT_PASSWORD: 'MYSQL_PASSWORD' MYSQL_USER: 'root' MYSQL_PASSWORD: 'MYSQL_PASSWORD' MYSQL_DATABASE: 'directus' - 重启容器:执行命令
docker-compose down && docker-compose up -d
- 修正DB_HOST配置:
辅助配置(使用IP访问时):
确保MySQL允许远程连接,执行以下SQL授权:GRANT ALL PRIVILEGES ON directus.* TO 'root'@'%' IDENTIFIED BY 'MYSQL_PASSWORD'; FLUSH PRIVILEGES;然后修改MySQL配置文件(
my.cnf/my.ini),将bind-address设置为0.0.0.0,重启MySQL服务。
内容的提问来源于stack exchange,提问作者Jack Hickson
相关产品推荐
相关产品推荐

