mysql数据库+【dify】调用Database工具执行SQL Execute
本文介绍了如何通过Docker Compose启动MySQL镜像,并加载自定义的SQL文件进行数据库初始化。随后,详细说明了如何验证容器的运行状态、数据库初始化、用户权限、网络连接以及数据持久化。最后,提供了使用Python连接MySQL数据库的示例代码,包括使用PyMySQL和SQLAlchemy的方式。
mySQL镜像的运行和检查
mySQL镜像的启动,同时加载自己的.sql文件
同目录下创建init-scripts文件下,该文件夹下放自己的.sql文件
一、创建docker-compose.yml文件
version: '3.8'
services:
mysql:
image: mysql:8.0.39
container_name: test-mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: advance
MYSQL_USER: user
MYSQL_PASSWORD: password
ports:
- "3306:3306"
volumes:
- ./mysql-data:/var/lib/mysql
- ./init-scripts:/docker-entrypoint-initdb.d # 将 advance.sql 放在此目录
command: --default-authentication-plugin=mysql_native_password
二、运行docker-compose.yml,创建mysql的容器docker-compose up -d
-d: 后台运行
验证 MySQL 容器启动后各项信息的详细步骤:
一、验证容器运行状态docker ps -f name=test-mysql
预期输出:显示容器状态为 Up,端口映射正确 (0.0.0.0:3306->3306/tcp)
失败处理:若容器未运行,检查日志:
docker logs test-mysql
二、验证数据库初始化
-
进入容器内 MySQL 命令行
docker exec -it test-mysql mysql -uuser -ppassword -
检查数据库是否存在
SHOW DATABASES;
预期输出:包含 advance 数据库 -
验证数据表初始化
USE advance;SHOW TABLES;
预期输出:显示 advance.sql 中定义的表格 -
检查数据内容(可选)
SELECT * FROM your_table LIMIT 5;# 替换为实际表名
三、验证用户权限
-
查看用户权限
SHOW GRANTS FOR 'user'@'%';
预期输出:显示用户对 advance 数据库的完整权限(如GRANT ALL PRIVILEGES ON advance.* TO 'user'@'%') -
测试用户连接
从宿主机连接测试mysql -h127.0.0.1 -P3306 -uuser -ppassword -e "STATUS"
预期输出:显示连接成功信息
四、验证网络连接
-
检查端口映射
netstat -tuln | grep 3306
预期输出:tcp6 0 0 :::3306 ::😗 LISTEN -
跨容器网络测试
启动一个临时测试容器docker run --rm -it --network host mysql:8.0.39 mysql -h127.0.0.1 -uuser -ppassword -e "STATUS"
预期输出:显示连接成功信息
五、验证数据持久化
-
删除容器后重新启动
docker-compose down -v && docker-compose up -d -
检查数据保留
USE advance;
SHOW TABLES; # 应仍然显示之前创建的表格
六、高级验证(可选)
-
检查初始化脚本日志
docker logs test-mysql | grep "Running scripts"
预期输出:显示 advance.sql 文件执行记录 -
性能测试
docker exec test-mysql mysqlslap -uuser -ppassword --concurrency=5 --iterations=10 --auto-generate-sql
连接数据库
-
Python
PyMySQL: 纯 Python 实现的驱动
import pymysql conn = pymysql.connect(host='localhost', user='root', password='123456', database='test') -
SQLAlchemy (ORM):
from sqlalchemy import create_engine engine = create_engine('mysql+pymysql://user:pass@host/db') -
标准格式
mysql+pymysql://<username>:<password>@<host>:<port>/<database>?charset=utf8mb4
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐



所有评论(0)