Dify_连接数据库
2026/7/6 5:49:51 网站建设 项目流程

1. 在 Ubuntu 22.04 虚拟机里用 Docker 部署 Dify 和 MySQL 8
2. 目标:让 Dify 的代码节点能够通过 PyMySQL 连接 MySQL 数据库

一、安装并配置 MySQL 8 容器

bash

# 创建 MySQL 容器,开启远程 root 访问(%) docker run -d \ --name mysql8 \ -p 3306:3306 \ -e MYSQL_ROOT_PASSWORD='Qw20010202!' \ -e MYSQL_ROOT_HOST='%' \ -v mysql_data:/var/lib/mysql \ mysql:8.0 其中重点是那个权限,一定要设置

二、让 Dify 支持 PyMySQL

添加 PyMySQL 依赖(sandbox 会自动安装)
echo "pymysql==1.1.1" >> ~/dify/docker/volumes/sandbox/dependencies/python-requirements.txt
允许 SSRF 代理访问 MySQL 端口 3306

修改ssrf_proxy/squid.conf.template,添加:

acl Safe_ports port 3306 # MySQL

可使用 sed 命令:

sed -i '/^acl Safe_ports port 80$/a\acl Safe_ports port 3306\t# MySQL' ~/dify/docker/ssrf_proxy/squid.conf.template
允许 sandbox 访问外部网络(关键)

编辑docker-compose.yaml,在sandbox服务的networks:部分增加- default,使其能连接宿主机网络。

sandbox: ... networks: - default # 新加这一行 - ssrf_proxy_network

重启 Dify 使配置生效:

cd ~/dify/docker docker compose down docker compose up -d

三、打通 MySQL 与 Dify 的网络

将 MySQL 容器也接入 Dify 的默认网络,使 sandbox 能通过容器名mysql8解析到 MySQL。

docker network connect docker_default mysql8

四、测试连接

在 sandbox 容器内执行 Python 脚本,验证 PyMySQL 能成功连接 MySQL:

docker exec -it docker-sandbox-1 python3 -c " import pymysql conn = pymysql.connect(host='mysql8', port=3306, user='root', password='Qw20010202!') print('连接成功') conn.close() "

输出"连接成功"表示所有配置正确。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询