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 仓库

相关推荐
Liu1bo6 小时前
【MySQL】表的约束
linux·数据库·mysql
胖胖的战士6 小时前
Mysql 数据库迁移
数据库·mysql
星光一影7 小时前
大型酒店管理系统源码(多酒店版)
mysql·php
czhc11400756637 小时前
LINUX1012 mysql GLIBC安装
数据库·mysql
小草儿7997 小时前
gbase8s之.net8连接8s之mysql模式(windows)demo
windows·mysql·.net
sakoba7 小时前
MySQL的json处理相关方法
android·学习·mysql·json
程序新视界8 小时前
MySQL的整体架构及功能详解
数据库·后端·mysql
ANYOLY8 小时前
MySQL索引指南
数据库·mysql
骑士雄师10 小时前
使用 IntelliJ IDEA 结合 DBeaver 连接 MySQL 数据库并实现数据增删查改的详细步骤:
数据库·mysql·intellij-idea
b78gb12 小时前
电商秒杀系统设计 Java+MySQL实现高并发库存管理与订单处理
java·开发语言·mysql