MCP:使用MCP访问MySQL数据库
该服务使大语言模型能够连接MySQL数据库并执行只读查询。下面开始实验一下。
环境准备【AI大模型教程】
可以按照上一篇文章《MCP:使用MCP访问PostgreSQL数据库》的方法进行MCP配置,或者也可以干脆直接让大模型自己完成MCP配置。参考提示词:
- “WindSurf的MCP配置文件在哪里”
- “在这个MCP配置文件中,增加MySQL数据库的配置”
- “测试MySQL的MCP配置是否正确”
这样,大模型自己就能完成MCP配置了,不需要再去看MCP的配置说明文档。
对话数据库信息
近期有无用户登录?
同样,可以使用MCP协议来查询数据库中记录的用户登录系统的情况。
近期有无用户登录?
大模型自动调用MCP后回复:
我来查询一下近期的用户登录情况。让我检查 user 和 user_token 表来了解用户活动。
查询用户表结构了解登录相关字段
查询近期用户登录记录
分析用户活动情况
根据查询结果,近期确实有用户登录活动:
### 用户登录情况
- **活跃用户**: 1个用户(admin)
- **总Token数**: 3个
- **用户ID**: 123456789
### 登录详情
| 系统模块 | Token过期时间 | 状态 |
|---------|--------------|------|
| SystemA | 2025-09-19 11:26:05 | Active |
| SystemB | 2025-09-15 16:25:38 | Active |
| SystemC | 2025-09-08 13:12:59 | Expired |
### 分析结果
- **最近登录**: 最新的token创建时间显示用户在近期有登录活动
- **活跃状态**: 目前有2个活跃的token,说明用户在不同系统模块中都有登录会话
- **系统使用**: 用户主要使用了3个系统模块:
- SystemA(A系统)- 当前活跃
- SystemB(B系统)- 当前活跃
- SystemC(C系统)- 已过期
**结论**: 是的,近期有用户登录,admin用户目前仍有活跃的登录会话。
AI通过MCP自动查询了数据库的用户登录信息,并且自动总结了用户登录过哪些子系统。期间,我并未向用户提供表名和表的用途等信息,大模型自己通过对表名使用的词语,理解了其实际含义。如果数据库在设计时符合常见的标准方法,那么大模型就可以像一名有经验的工程师一样,一眼就能理解数据库结构和含义。
询问表的分区情况
换个别的问题再试:
帮我看看device_16表是如何分区的?
大模型自动调用MCP后回复:
我来查询一下device_16表的分区情况。让我检查device_16表的表结构和分区信息。
查询device_16表的表结构了解分区相关字段
查询device_16表的分区信息
分析分区情况
根据我对数据库的查询,device_16 表的分区情况如下:
### 分区结构概览
该表使用 RANGE 分区,基于 createAt 字段(日期时间字段)进行分区,具体的分区表达式是 to_days(createAt)。
### 分区详情
| 分区名称 | 分区边界日期 | 数据行数 | 数据大小(MB) | 索引大小(MB) | 状态 |
|---------|-------------|---------|-------------|-------------|------|
| p202506 | 2025-06-30 | 816,397 | 43.59 | 46.64 | 有数据 |
| p202507 | 2025-07-31 | 0 | 0.02 | 0.02 | 空分区 |
| p202508 | 2025-08-31 | 1,000 | 0.08 | 0.08 | 少量数据 |
| p202509 | 2025-09-30 | 0 | 0.02 | 0.02 | 空分区 |
| p202510 | 2025-10-31 | 0 | 0.02 | 0.02 | 空分区 |
### 分区特点
- **分区方式**: 按月进行 RANGE 分区
- **分区键**: createAt 字段,使用 to_days() 函数转换
- **数据分布**: 主要数据集中在 p202506 分区(2025年6月),包含81万多条记录
- **存储效率**: p202506 分区数据大小约43.59MB,索引大小46.64MB
- **预分区**: 已预创建到2025年10月的分区,便于未来数据插入
这种按月分区的设计有利于:
- 提高查询性能(特别是按时间范围查询)
- 便于数据维护和归档
- 支持分区裁剪优化
结论
虽然没有MCP,我们依然可以通过告诉AI数据库的地址和连接方法等技术过程,让AI协助获取数据库的相关信息,但是这种原始的操作往往技术含量较高,复杂需求的时候AI甚至需要临时编写代码来实现需求。
而通过大模型+MCP,我们可以快捷地在对话框中以自然语言查询数据库的有关信息,整个沟通过程可以完全不涉及技术操作,而让用户可以以业务视角进行切入,绕开技术鸿沟,直接与大模型沟通数据信息。每降低一个技术门槛,有能力操作数据的用户群范围就会扩大、数据分析的门槛就会进一步降低。用户可以更高效地做更多以前难以进行的数据分析工作,真正实现了数据触手可得,对于提升数据相关岗位工作的效率起到了积极的作用。
综合以上,MySQL MCP是一个工具,合理的使用,可以提高数据分析工作的效率。