mcp-server-mysql 变更日志深度解读:从 mysql2 迁移到 PII 脱敏的版本演进全记录

发布时间:2026/10/14 16:33:36
mcp-server-mysql 变更日志深度解读:从 mysql2 迁移到 PII 脱敏的版本演进全记录 MCP 服务数据库客户端AI 应用【免费下载链接】mcp-server-mysqlA Model Context Protocol server that provides read-only access to MySQL databases. This server enables LLMs to inspect database schemas and execute read-only queries.项目地址https://gitcode.com/gh_mirrors/mc/mcp-server-mysql点击查看免费下载CHANGELOG.md 记录了 mcp-server-mysql 从 1.0.7 初始发布到当前 Unreleased 版本的全部演进脉络数据库驱动从mysql迁移到mysql2、写操作权限体系的建立、测试环境的加固以及最新加入的 PII个人身份信息脱敏能力。本文以该变更日志为骨架结合仓库源码逐条印证每个版本的关键变更帮助你在升级版本、排查行为差异或配置 PII 脱敏时快速理解这个能力是哪一版引入的、默认行为是什么、由哪段源码实现。一、变更日志的组织结构CHANGELOG.md 采用 Keep a Changelog 风格组织当前文件包含四个部分Unreleased尚未发版的新增能力目前只有三项全部围绕 PII 脱敏环境变量Planned Features按 Query Features、Security、Performance、Monitoring、Schema Management 五类列出的路线图已发布版本从[1.0.14] - 2024-07-01到[1.0.7] - Previous version每个版本按 Added / Changed / Fixed / Security / Documentation 分节。需要注意的一个事实是当前 package.json 中的版本号已经是version: 2.0.9而 CHANGELOG 中最高的正式版本记录停留在 1.0.14。从源码结构看2.x 线引入了多库模式multi-DB、按 schema 的细粒度权限、远程 MCP 模式等能力见 index.ts 中的isMultiDbMode、IS_REMOTE_MCP处理逻辑但这些 2.x 变更尚未回填到变更日志中日志里 PII 脱敏仍挂在 Unreleased 下。阅读时请以文档记录 当前源码实际行为两者对照为准。二、UnreleasedPII 脱敏的三个环境变量这是当前变更日志的核心增量。三项新增能力全部用于控制查询结果中的 PII 暴露面且默认保持关闭默认false不改变既有行为。2.1ENABLE_PII_REDACTION脱敏总开关设置为true后只读查询结果在返回前会被逐层遍历walked疑似 PII 的值会被替换为保留形状的部分掩码例如原始值脱敏输出jane.doeexample.comj***e***.com415-555-0134***-***-0134123-45-6789***-**-67894111 1111 1111 1111****-****-****-1111检测采用双策略列名启发式——内置列名列表email、ssn、phone、first_name、address、credit_card、password、api_key、token等做大小写不敏感的子串匹配值正则扫描——对每个字符串值扫描 email、美国手机号、SSN、IPv4以及经过 Luhn 校验的信用卡号。完整的掩码规则表、加固守卫PII_ALLOW_SELECT_STAR等和已知局限详见 docs/PII-REDACTION.md。源码印证开关的解析在 src/config/index.tsENABLE_PII_REDACTION true严格字符串比较True、1都不生效内置列名列表DEFAULT_PII_COLUMNS约 35 个子串含e_mail、social_security、cvv、passwd、ipaddress等变体定义在 src/security/redact.ts五类掩码函数maskEmail/maskPhone/maskSSN/maskIP/maskCard及 Luhn 校验isLuhnValid在同文件 src/security/redact.ts。信用卡掩码之所以要做 Luhn 校验源码注释明确写了避免误伤订单号等普通长数字脱敏调用链在 src/db/index.ts只读查询结果先经过 introspection 行过滤再统一走redactPII(intermediate, { extraColumns, columnPatterns, parseJsonStrings })。注意只有只读查询结果会被脱敏schema/表清单与写操作响应摘要不受影响写操作在 src/db/index.ts 返回的是 Insert successful… 一类摘要不经过脱敏器。2.2PII_EXTRA_COLUMNS追加列名子串逗号分隔、大小写不敏感的子串列表追加到内置 PII 列名列表之后。空/空白条目会被直接忽略——这是一个明确的防御设计一个空子串会匹配所有键名导致整行数据被误掩。该变量仅在ENABLE_PII_REDACTIONtrue时生效。PII_EXTRA_COLUMNSimage_url,signed_url,internal_note源码印证src/config/index.ts 的解析逻辑是split(,)→trim()→toLowerCase()→filter(s s.length 0)而redactPII内部还会再做一次空串过滤纵深防御见 src/security/redact.ts。.env.dist 中也给出了与文档一致的示例注释。2.3PII_EXTRA_COLUMN_PATTERNS追加列名正则分号分隔的 JavaScript 正则主体不带/定界符和 flag运行时统一以iflag 编译并对小写化后的列名做测试。选分号而非逗号做分隔符是为了避免正则字符类内部的逗号如[a-z,.]造成歧义。非法模式会被记录日志并跳过——单条坏配置不会导致服务崩溃。同样仅在ENABLE_PII_REDACTIONtrue时生效。PII_EXTRA_COLUMN_PATTERNS^(signed|protected)_.*;^.*_token$源码印证编译逻辑在 src/config/index.ts 的parseColumnPatterns中try { new RegExp(trimmed, i) } catch后通过console.error输出ignoring invalid PII_EXTRA_COLUMN_PATTERNS entry ...并继续。子串匹配与正则匹配是 OR 关系列名命中任一子串或任一正则即被标记见 src/security/redact.ts 的matchPIIColumn/isPIIColumn。三、Planned Features路线图全貌变更日志中的 Planned Features 一节列出了五个方向的计划功能原文完整继承如下Query FeaturesPrepared statement 支持、查询参数校验、查询超时配置、结果分页、查询执行统计Security增强的 SQL 注入防护、查询白名单/黑名单、限流rate limiting、查询复杂度分析、连接加密配置Performance连接池优化、查询结果缓存、大结果集流式返回、查询执行计划分析Monitoring查询日志系统、性能指标采集、错误跟踪与上报、健康检查端点Schema Management表关系信息、索引细节、外键约束、表统计。这些条目目前只是计划当前源码中尚无对应实现例如 src/db/index.ts 中的执行路径里不存在超时、缓存或限流逻辑引用时请注意区分已计划与已交付。四、版本演进时间线1.0.7 → 1.0.144.1 [1.0.7] — 初始发布Initial release with basic MySQL functionality。这是项目的起点基础的 MySQL 只读查询能力即后来 README 中mysql_query工具与mysql://tables资源的雏形见 README.md 的 Tools Resources 一节。4.2 [1.0.8] — 从mysql迁移到mysql2日志要点Changed从mysql升级到mysql2^3.13.0以获得更好的 MySQL 8.0 兼容性数据库连接代码重构为 mysql2 的 Promise-based API支持 MySQL 8.0 的caching_sha2_password认证插件Removed移除已弃用的mysql包依赖与未使用的types/mysql2devDependencyFixed修复与 MySQL 8.0 服务器的认证问题改进连接处理与错误处理。源码印证当前 package.json 中依赖为mysql2: ^3.14.1已无mysql包。连接池通过mysql2/promise的createPool懒加载创建见 src/db/index.ts所有查询走pool.getConnection()→connection.query()的 Promise 链路与日志描述的 Promise-based API 重构一致。配置中还针对mysql_clear_password注册了自定义 authPluginsrc/config/index.ts属于对 MySQL 认证场景的配套处理。4.3 [1.0.9] — CI 与测试修复日志要点AddedGitHub Actions CI 工作流在带 MySQL service 的环境下自动执行 lint、build、testChanged移除types/mysql2依赖及相关类型引用测试文件改用any类型修复集成测试对 MySQL 连接与查询的处理Fixed修复 CI 工作流需先安装 pnpm 才能用于缓存的问题通过移除有问题的executeReadOnlyQuery测试修复失败的单元测试。源码印证CI 工作流位于 .github/workflows/ci.yml同目录还有 lint.yml、npm-publish.yml 等。测试体系在 docs/TESTING.md 有进一步说明集成测试如 tests/integration/mysql.test.ts 依赖真实的 MySQL 连接。4.4 [1.0.10] — 发布修复日志要点Changed版本号 bump 以修复 npm 发布问题README 安装说明改为引用具体版本。从日志结构看1.0.11 / 1.0.12 没有单独条目可以推断为未对外发布或未记录的修订版日志直接从 1.0.10 跳到 1.0.13。4.5 [1.0.13] - 2024-05-26 — 写操作支持这是日志中篇幅最大的版本核心是默认只读、写操作逐项 opt-in的权限体系落地Added通过 Smithery 配置完整的写操作支持新增写操作环境变量ALLOW_INSERT_OPERATION、ALLOW_UPDATE_OPERATION、ALLOW_DELETE_OPERATIONSmithery schema 中新增控制写权限的配置项支持通过环境变量启用/禁用特定 SQL 操作增强未授权写操作的错误处理ChangedSmithery 配置纳入写操作设置改进 Smithery 集成的安全默认值README 安装说明重构数据库连接问题的错误报告改进写操作的事务处理改进Fixed数据库连接失败的错误处理未授权操作的错误信息MySQL 8.0 认证方法处理Smithery 中的 SSL/TLS 配置选项Security所有写操作INSERT、UPDATE、DELETE默认禁用文档明确说明启用写操作的安全影响写操作事务隔离改进错误报告不暴露敏感信息DocumentationREADME 补充 Smithery 配置说明、启用特定写操作的示例、排障章节以及不同操作类型所需 MySQL 权限的说明。源码印证三个开关在 src/config/index.ts 解析均为严格 true不设置即为false默认禁用与日志的 Security 承诺一致权限检查函数isInsertAllowedForSchema/isUpdateAllowedForSchema/isDeleteAllowedForSchema位于 src/db/permissions.ts并带有SCHEMA_*_PERMISSIONS的按 schema 覆盖逻辑执行侧executeReadOnlyQuery会用 SQL 解析器识别语句类型src/db/utils.ts 的getQueryTypes未授权时直接返回带SCHEMA_*_PERMISSIONS提示的错误src/db/index.ts授权后路由到executeWriteQuery并在事务中执行、出错回滚src/db/index.ts配置侧的完整环境变量表含这三个开关的默认值见 docs/CONFIGURATION.mdSmithery 集成配置见仓库根目录的 smithery.yaml。4.6 [1.0.14] - 2024-07-01 — 测试环境加固Added测试环境自动选择数据库测试模式下数据库配置的综合调试日志测试环境的安全进程终止处理Changed改进测试环境检测以支持 VitestMySQL 连接配置在各环境使用一致的默认值数据库搭建脚本的错误处理更健壮Fixed通过确保数据库名始终被设置修复集成测试中的 No database selected 错误通过提供一致的默认凭据修复测试环境认证问题通过条件化process.exit处理避免测试提前终止测试数据库搭建失败时允许测试继续Security开发与测试环境的认证行为一致调试日志中不再暴露真实密码值Documentation测试特定配置的内联注释改进错误信息以便调试。源码印证数据库名始终被设置src/config/index.ts 中NODE_ENV test且未设置MYSQL_DB时自动落到mcp_test_db测试库的创建脚本是 scripts/setup-test-db.ts先连库、CREATE DATABASE IF NOT EXISTS、重建users/posts等测试表由package.json的pretest/test脚本自动触发条件化 process.exitsafeExit在测试环境下只打日志不真正退出进程src/db/index.ts 的isTestEnvironment判断检测NODE_ENV test || process.env.VITEST调试日志不暴露密码启动时的配置日志将密码字段替换为******index.ts与 1.0.13 的错误报告不暴露敏感信息形成连续的安全改进线。五、如何结合变更日志排查与配置确认行为差异的版本归属遇到老版本能跑、新版本被拒绝的查询时先对照本日志判断引入守卫的版本。例如SELECT *被拒、information_schema查询被拒属于 PII 脱敏配套守卫Unreleased可通过PII_ALLOW_SELECT_STARtrue/PII_ALLOW_INTROSPECTIONtrue显式放行各开关的默认值汇总在 docs/CONFIGURATION.md 的 PII Redaction 表格中。验证脱敏行为单元级断言见 tests/unit/redact.test.ts如maskEmail(jane.doeexample.com)必须得到j***e***.com、Luhn 不合法的 16 位数字必须原样放行端到端验证见 tests/integration/pii-redaction.test.ts其中构造了覆盖列名启发式、值正则扫描、Luhn PAN、以及PII_EXTRA_COLUMNS扩展机制的完整种子数据并断言原始 PII 子串不得出现在脱敏响应中。升级检查点1.0.8 之后不再兼容旧mysql包的行为1.0.13 之后写操作必须显式开启启用 PII 脱敏Unreleased后默认同时收紧SELECT *、PII 列引用与 introspection 三类查询这是行为变化最集中的一处建议先在只读场景验证再放量。六、延伸阅读README.md快速安装、Key Features 总览与文档索引docs/CONFIGURATION.md全部环境变量与默认值docs/PII-REDACTION.mdPII 脱敏的完整规则、加固守卫与已知局限docs/INSTALLATION.md / docs/TROUBLESHOOTING.md安装与排障README-MULTI-DB.md多库模式说明2.x 能力变更日志尚未覆盖CHANGELOG.md本文所依据的原始变更日志。赞分享MCP 服务数据库客户端AI 应用【免费下载链接】mcp-server-mysqlA Model Context Protocol server that provides read-only access to MySQL databases. This server enables LLMs to inspect database schemas and execute read-only queries.项目地址https://gitcode.com/gh_mirrors/mc/mcp-server-mysql点击查看免费下载相关推荐Stylelint 变更日志深度解读从 0.1.0 到 17.14.1 的版本演进、破坏性变更与迁移实战Stylelint 变更日志深度解读从 0.1.0 到 17.14.1 的版本演进、破坏性变更与迁移实战 Stylelint 是一个帮助开发者避免 CSS 错代码质量静态分析前端marshmallow 变更日志深度解读从 0.1.0 到 4.4.0 的版本演进、破坏性变更与迁移指南marshmallow 变更日志深度解读从 0.1.0 到 4.4.0 的版本演进、破坏性变更与迁移指南 marshmallow 是一个 ORM/ODM/框架后端序列化stlink 版本演进全解从 v1.2.0 到 v1.8.1 的变更日志深度解读stlink 版本演进全解从 v1.2.0 到 v1.8.1 的变更日志深度解读 stlink 是面向 STMicroelectronics STM32 MC嵌入式硬件开发开发工具调试器创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询