MCP MySQL Server v2.0.1 发布:智能 DDL 日志记录,让数据库变更可追溯

本指南将帮助您从安装到使用MCP MySQL服务器,实现数据库操作的便捷管理。

目录

引言

在现代化的软件开发流程中,数据库结构管理一直是一个关键挑战。开发团队需要在多个环境间同步数据库变更,运维团队需要追踪每一次结构修改,而合规要求则需要对所有数据库操作进行审计。为了解决这些痛点,我们很高兴地宣布 MCP MySQL Server v2.0.1 的发布,这个版本带来了革命性的 DDL 日志记录功能。

核心功能:智能 DDL 日志记录

什么是 DDL 日志记录?

DDL(Data Definition Language)日志记录是 v2.0.1 版本的核心新功能。它能够自动捕获所有成功的数据库结构变更操作,并将它们记录到一个专门的 SQL 文件中。这个功能不仅解决了数据库变更追踪的问题,更为团队协作和运维管理带来了全新的体验。

主要特性

🎯 仅记录成功操作

  • 只有成功执行的 DDL 操作才会被记录到日志文件中
  • 失败的 SQL 语句不会污染可执行文件,确保日志的纯净性
  • 内存中仍保留完整的操作记录,便于调试和问题排查

⏰ 精确时间戳

  • 每个 DDL 操作都包含精确到秒的时间戳注释
  • 格式:# 2025-09-08 15:24:36
  • 便于追踪变更历史和进行时间线分析

🔧 自动格式化

  • SQL 语句自动添加分号结尾
  • 多行 SQL 语句保持完整格式
  • 确保生成的日志文件可以直接执行

实际应用场景

数据库同步与部署

在微服务架构中,不同的服务可能需要访问相同的数据结构。通过 DDL 日志记录,开发团队可以轻松地将数据库结构变更从开发环境同步到测试、预发布和生产环境。生成的 ddl.sql 文件可以直接在目标环境中执行,确保所有环境的数据结构保持一致。

团队协作与代码审查

传统的数据库变更往往通过口头沟通或文档记录,容易出现遗漏和误解。现在,开发团队可以通过 DDL 日志文件清晰地了解每一次结构变更,将数据库变更与应用程序代码变更一起进行审查,提高协作效率。

合规与审计

对于需要满足合规要求的企业,DDL 日志记录提供了完整的数据库变更审计跟踪。每一次结构修改都有精确的时间戳记录,满足监管机构对数据库变更跟踪的要求。

技术实现亮点

新增工具支持

v2.0.1 版本新增了 get_ddl_sql_logs 工具,允许用户通过 MCP 协议查询 DDL 操作历史。这个工具支持分页查询,可以灵活地获取不同时间段的操作记录。

环境变量配置

通过 MCP_DDL_LOG_FILE 环境变量,用户可以自定义 DDL 日志文件的名称和位置,满足不同项目的需求。

向后兼容

新功能完全向后兼容,现有的 MCP MySQL Server 用户可以无缝升级到 v2.0.1 版本,无需修改任何配置。

使用示例

生成的 DDL 日志文件格式清晰易读:

sql 复制代码
# 2025-09-08 15:24:36
CREATE TABLE test_v201_users (
    id INT AUTO_INCREMENT PRIMARY KEY,
    username VARCHAR(50) NOT NULL,
    email VARCHAR(100) UNIQUE,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
# 2025-09-08 15:24:40
ALTER TABLE test_v201_users ADD COLUMN phone VARCHAR(20);
# 2025-09-08 15:24:44
CREATE INDEX idx_username_v201 ON test_v201_users(username);

功能特性

  • ✅ 支持SQL查询执行(DDL和DML操作)
  • ✅ 数据库信息获取与管理
  • ✅ 完整的操作日志记录
  • ✅ 智能连接池管理
  • ✅ 自动重连机制
  • ✅ 实时健康检查
  • ✅ 强大的错误处理和恢复能力

安装步骤

方法一:全局安装(推荐)

bash 复制代码
npm install -g @liangshanli/mcp-server-mysql

方法二:本地安装

bash 复制代码
npm install @liangshanli/mcp-server-mysql

方法三:使用npx直接运行(无需安装)

bash 复制代码
npx @liangshanli/mcp-server-mysql

配置方法

1. 创建配置文件

在您的项目根目录创建配置文件,根据您使用的编辑器选择合适的配置方式:

Trae AI 编辑器配置

在AI聊天窗体右上角设置中,选择MCP,手动添加以下代码,在内置智能体中选择@Builder with MCP:

json 复制代码
{
  "mcpServers": {
    "mysql": {
      "command": "npx",
      "args": ["@liangshanli/mcp-server-mysql"],
      "env": {
        "MYSQL_HOST": "your_host",
        "MYSQL_PORT": "3306",
        "MYSQL_USER": "your_user",
        "MYSQL_PASSWORD": "your_password",
        "MYSQL_DATABASE": "your_database",
        "ALLOW_DDL": "false",
        "ALLOW_DROP": "false",
        "ALLOW_DELETE": "false",
        "MCP_LOG_DIR": "D:\\mcp\\logs",
        "MCP_LOG_FILE": "mcp-mysql.log",
        "MCP_DDL_LOG_FILE": "ddl.sql"
      }
    }
  }
}

VS Code 配置

  1. 安装 VS Code 的 MCP 扩展
  2. 创建 .vscode/settings.json 文件:
json 复制代码
{
  "mcp.servers": {
    "@liangshanli/mcp-server-mysql": {
      "command": "npx",
      "args": [
        "@liangshanli/mcp-server-mysql"
      ],
      "env": {
        "MYSQL_HOST": "sh-cynosdbmysql-grp-cv1drb1a.sql.tencentcdb.com",
        "MYSQL_PORT": "21610",
        "MYSQL_USER": "testuser",
        "MYSQL_PASSWORD": "testusertestuser",
        "MYSQL_DATABASE": "testtable",
        "ALLOW_DDL": "true",
        "ALLOW_DROP": "true",
        "ALLOW_DELETE": "true",
        "MCP_LOG_DIR": "D:\\mcp\\logs",
        "MCP_LOG_FILE": "mcp-mysql.log",
        "MCP_DDL_LOG_FILE": "ddl.sql"
      }
    }
  }
}

Cursor 编辑器配置

在项目根目录创建 .cursor/mcp.json 文件:

json 复制代码
{
  "mcp.servers": {
    "mysql": {
      "command": "npx",
      "args": ["@liangshanli/mcp-server-mysql"],
      "env": {
        "MYSQL_HOST": "your_host",
        "MYSQL_PORT": "3306",
        "MYSQL_USER": "your_user",
        "MYSQL_PASSWORD": "your_password",
        "MYSQL_DATABASE": "your_database",
        "ALLOW_DDL": "false",
        "ALLOW_DROP": "false",
        "ALLOW_DELETE": "false",
        "MCP_LOG_DIR": "D:\\mcp\\logs",
        "MCP_LOG_FILE": "mcp-mysql.log",
        "MCP_DDL_LOG_FILE": "ddl.sql"
      }
    }
  }
}

2. 环境变量说明

变量名 说明 示例值
MYSQL_HOST MySQL主机地址 sh-cynosdbmysql-grp-cv1drb1a.sql.tencentcdb.com
MYSQL_PORT MySQL端口 21610
MYSQL_USER MySQL用户名 testuser
MYSQL_PASSWORD MySQL密码 testusertestuser
MYSQL_DATABASE 数据库名 testtable
ALLOW_DDL 是否允许DDL操作 true
ALLOW_DROP 是否允许DROP操作 true
ALLOW_DELETE 是否允许DELETE操作 true
MCP_LOG_DIR 日志目录 ./logs
MCP_LOG_FILE 日志文件名 mcp-mysql.log
MCP_DDL_LOG_FILE DDL SQL日志文件名 ddl.sql

连接服务器

自动连接(编辑器集成)

配置好MCP服务器后,编辑器会自动连接到服务器。您可以通过编辑器的AI助手直接使用数据库功能。

手动启动

如果需要手动启动服务器,可以使用以下命令:

bash 复制代码
npx @liangshanli/mcp-server-mysql

服务器启动后,将通过stdin/stdout与MCP客户端通信。

使用示例

基本SQL查询

sql 复制代码
-- 查询数据
SELECT * FROM users LIMIT 10;

-- 创建表
CREATE TABLE demo_products (
  id INT PRIMARY KEY AUTO_INCREMENT,
  product_name VARCHAR(100) NOT NULL,
  price DECIMAL(10,2) NOT NULL,
  category VARCHAR(50),
  created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

-- 插入数据
INSERT INTO demo_products (product_name, price, category) VALUES
('智能手机', 4999.99, '电子产品'),
('笔记本电脑', 6999.00, '电子产品'),
('无线耳机', 899.00, '配件');

使用存储过程

sql 复制代码
-- 创建存储过程
CREATE PROCEDURE update_product_stock(IN product_id INT, IN stock_change INT)
BEGIN
    UPDATE demo_products
    SET stock = stock + stock_change
    WHERE id = product_id;
    
    SELECT CONCAT('产品ID: ', product_id, ' 库存已更新,变化量: ', stock_change) AS message;
END;

-- 调用存储过程
CALL update_product_stock(1, -20);

可用工具

通过MCP服务器,您可以使用以下工具:

  1. sql_query: 执行SQL查询(支持DDL和DML操作)
  2. get_database_info: 获取数据库信息(数据库列表、表列表和配置信息)
  3. get_operation_logs: 获取操作日志
  4. get_ddl_sql_logs: 获取DDL SQL操作日志
  5. check_permissions: 检查数据库权限(DDL、DROP、DELETE等操作)

日志系统

常规日志

日志文件位置:./logs/mcp-mysql.log

记录内容:

  • 所有请求和响应
  • SQL操作记录
  • 错误信息
  • 连接池状态变化

DDL SQL日志

DDL日志文件位置:./logs/ddl.sql

功能特性:

  • 仅记录成功的DDL操作
  • 每个操作都包含精确的时间戳注释
  • SQL语句自动格式化并添加分号结尾
  • 可直接执行来重建数据库结构

示例格式:

sql 复制代码
# 2024-01-15 14:23:45
CREATE TABLE users (id INT PRIMARY KEY, name VARCHAR(100));
# 2024-01-15 14:24:12
ALTER TABLE users ADD COLUMN email VARCHAR(255);

常见问题

1. 连接失败

问题: 无法连接到MySQL服务器

解决方案:

  • 检查主机名、端口、用户名和密码是否正确
  • 确认MySQL服务器是否允许远程连接
  • 检查网络连接和防火墙设置

2. 权限问题

问题: 执行某些操作时提示权限不足

解决方案:

  • 检查环境变量中的权限设置(ALLOW_DDL、ALLOW_DROP、ALLOW_DELETE)
  • 确认MySQL用户是否有足够的权限执行相应操作

3. 日志文件不存在

问题: 找不到日志文件

解决方案:

  • 确认MCP_LOG_DIR目录是否存在,如不存在则创建
  • 检查应用是否有写入日志目录的权限

许可证

MIT


MCP MySQL Server 是一个开源的 MCP 协议 MySQL 服务器,支持 DDL 操作、权限控制和操作日志记录。了解更多信息,请访问 GitHub 仓库

相关推荐
福赖9 小时前
《MySQL基础——C 语言链接》
c语言·数据库·mysql
程序新视界10 小时前
如何为MySQL中的JSON字段设置索引
数据库·mysql
半夏陌离21 小时前
SQL 拓展指南:不同数据库差异对比(MySQL/Oracle/SQL Server 基础区别)
大数据·数据库·sql·mysql·oracle·数据库架构
敬业小码哥1 天前
记一次:mysql的json及json数组使用组合使用
数据库·mysql·json
练小杰1 天前
【Mysql-installer-community-8.0.26.0】Mysql 社区版(8.0.26.0) 在Window 系统的默认安装配置
数据库·sql·mysql·adb·配置文件·mysql安装·关系型数据库
感哥1 天前
MySQL多表查询
mysql
十八旬1 天前
苍穹外卖项目实战(day-5完整版)-记录实战教程及问题的解决方法
java·开发语言·spring boot·redis·mysql
青鱼入云1 天前
java面试中经常会问到的mysql问题有哪些(基础版)
java·mysql·面试
送秋三十五1 天前
MySQL DBA需要掌握的 7 个问题
数据库·mysql·dba