Cursor MySQL MCP 完整操作配置指南
📋 概述
本指南帮助您在 Windows 环境下配置 Cursor 编辑器的 MySQL MCP 服务器,实现通过 AI 助手对数据库进行完整的增删改查操作。
功能特性:
- ✅ 自然语言数据库查询
- ✅ 智能数据插入和更新
- ✅ 安全的数据删除操作
- ✅ 自动数据分析和报告生成
🚀 快速配置
1. 环境检查
# 检查必要组件node --version # Node.js >= 16mysql --version # MySQL 5.7+cursor --version # Cursor 最新版
2. 安装 MCP 服务器
# 全局安装(推荐)npm install -g @benborla29/mcp-server-mysql# 或使用 npx 直接运行npx -y @benborla29/mcp-server-mysql
3. 创建数据库用户
-- 创建完整操作权限用户CREATE USER \'cursor_mcp\'@\'%\' IDENTIFIED BY \'YourSecurePassword123!\';-- 授予完整数据操作权限GRANT SELECT, INSERT, UPDATE, DELETE ON your_database.* TO \'cursor_mcp\'@\'%\';-- 刷新权限FLUSH PRIVILEGES;-- 验证权限SHOW GRANTS FOR \'cursor_mcp\'@\'%\';
4. 配置 Cursor
在项目根目录创建 .cursor/mcp.json
文件:
{ \"mcpServers\": { \"mysql\": { \"command\": \"npx\", \"args\": [ \"-y\", \"@benborla29/mcp-server-mysql\" ], \"env\": { \"MYSQL_HOST\": \"localhost\", \"MYSQL_PORT\": \"3306\", \"MYSQL_USER\": \"cursor_mcp\", \"MYSQL_PASS\": \"YourSecurePassword123!\", \"MYSQL_DB\": \"your_database\", \"ALLOW_INSERT_OPERATION\": \"true\", \"ALLOW_UPDATE_OPERATION\": \"true\", \"ALLOW_DELETE_OPERATION\": \"true\", } } }}
5. 测试连接
# PowerShell 环境变量测试$env:MYSQL_HOST=\"localhost\"$env:MYSQL_USER=\"cursor_mcp\"$env:MYSQL_PASS=\"YourSecurePassword123!\"$env:MYSQL_DB=\"your_database\"$env:ALLOW_INSERT_OPERATION=\"true\"$env:ALLOW_UPDATE_OPERATION=\"true\"$env:ALLOW_DELETE_OPERATION=\"true\"npx -y @benborla29/mcp-server-mysql
6. 重启验证
- 完全关闭 Cursor 编辑器
- 重新打开 Cursor
- 进入 Settings > MCP
- 确认
mysql
服务器状态为绿色 - 在聊天窗口测试:
显示数据库中的所有表
💾 完整操作示例
数据查询
\"显示所有用户表的记录\"\"查询最近7天注册的用户\"\"统计每个部门的员工数量\"\"分析上个月的销售趋势\"\"找出最受欢迎的产品类型\"
数据插入
\"在用户表中添加新用户:姓名\'张三\',邮箱\'zhangsan@example.com\',部门\'开发部\'\"\"批量插入测试数据:- 用户1:李四,lisi@test.com,销售部- 用户2:王五,wangwu@test.com,市场部\"\"创建一个新订单,客户ID为123,产品ID为456,数量为2\"
数据更新
\"将用户ID为100的用户状态改为\'已激活\'\"\"把所有\'待处理\'状态的订单改为\'处理中\'\"\"将价格低于100元的产品价格统一上涨10%\"\"更新所有过期的会员卡状态为\'已过期\'\"
数据删除
\"删除创建时间超过30天的测试数据\"\"清理所有状态为\'已取消\'的订单记录\"\"移除邮箱为空的无效用户记录\"\"删除ID为999的用户及其相关数据\"
复杂操作
\"创建月度销售报告,包含每个销售员的业绩排名\"\"分析用户行为,找出最常购买的产品组合\"\"清理重复数据:删除邮箱相同但ID不同的用户记录,保留最早注册的\"\"批量更新库存:将库存为0的产品状态改为\'缺货\'\"
🔒 安全配置
生产环境用户权限
-- 生产环境:限制危险操作CREATE USER \'cursor_prod\'@\'%\' IDENTIFIED BY \'SuperSecurePassword456!\';-- 只授予数据操作权限,不包含结构修改GRANT SELECT, INSERT, UPDATE, DELETE ON production_db.* TO \'cursor_prod\'@\'%\';-- 特别限制:不允许DROP, ALTER, CREATE等结构操作-- 这些权限默认不会被授予FLUSH PRIVILEGES;
分环境配置
{ \"mcpServers\": { \"mysql_dev\": { \"command\": \"npx\", \"args\": [\"-y\", \"@benborla29/mcp-server-mysql\"], \"env\": { \"MYSQL_HOST\": \"localhost\", \"MYSQL_DB\": \"development_db\", \"MYSQL_USER\": \"dev_user\", \"MYSQL_PASS\": \"dev_password\", \"ALLOW_INSERT_OPERATION\": \"true\", \"ALLOW_UPDATE_OPERATION\": \"true\", \"ALLOW_DELETE_OPERATION\": \"true\" } }, \"mysql_prod\": { \"command\": \"npx\", \"args\": [\"-y\", \"@benborla29/mcp-server-mysql\"], \"env\": { \"MYSQL_HOST\": \"prod-server.example.com\", \"MYSQL_DB\": \"production_db\", \"MYSQL_USER\": \"prod_readonly\", \"MYSQL_PASS\": \"prod_password\", \"ALLOW_INSERT_OPERATION\": \"false\", \"ALLOW_UPDATE_OPERATION\": \"false\", \"ALLOW_DELETE_OPERATION\": \"false\" } } }}
SSL 安全连接
{ \"env\": { \"MYSQL_HOST\": \"remote-db.example.com\", \"MYSQL_PORT\": \"3306\", \"MYSQL_SSL\": \"true\", \"MYSQL_SSL_CA\": \"/path/to/ca-cert.pem\", \"MYSQL_SSL_CERT\": \"/path/to/client-cert.pem\", \"MYSQL_SSL_KEY\": \"/path/to/client-key.pem\" }}
⚙️ 高级配置
性能优化
{ \"env\": { \"MYSQL_POOL_SIZE\": \"20\", \"MYSQL_QUERY_TIMEOUT\": \"60000\", \"MYSQL_CACHE_TTL\": \"300000\", \"MYSQL_RATE_LIMIT\": \"200\", \"MYSQL_MAX_QUERY_COMPLEXITY\": \"2000\" }}
日志和监控
{ \"env\": { \"ENABLE_LOGGING\": \"true\", \"MYSQL_LOG_LEVEL\": \"info\", \"MYSQL_METRICS_ENABLED\": \"true\", \"DEBUG\": \"mcp:*\" }}
远程数据库配置
{ \"env\": { \"MYSQL_HOST\": \"192.168.1.100\", \"MYSQL_PORT\": \"3306\", \"MYSQL_CONNECTION_TIMEOUT\": \"10000\", \"MYSQL_RECONNECT\": \"true\", \"MYSQL_CHARSET\": \"utf8mb4\" }}
🛡️ 安全最佳实践
1. 权限控制
-- ✅ 推荐:精确权限控制GRANT SELECT, INSERT, UPDATE, DELETE ON specific_database.* TO \'cursor_user\'@\'%\';-- ❌ 避免:过度权限-- GRANT ALL PRIVILEGES ON *.* TO \'cursor_user\'@\'%\';-- ✅ 推荐:特定表权限GRANT SELECT ON sensitive_table TO \'cursor_user\'@\'%\';GRANT INSERT, UPDATE ON regular_table TO \'cursor_user\'@\'%\';
2. 网络安全
# 检查防火墙规则netsh advfirewall firewall show rule name=\"MySQL\"# 限制访问IP(MySQL配置)# bind-address = 127.0.0.1 # 仅本地# bind-address = 192.168.1.0/24 # 仅内网
3. 密码安全
-- 设置强密码策略SET GLOBAL validate_password.policy = STRONG;SET GLOBAL validate_password.length = 12;-- 定期更换密码ALTER USER \'cursor_mcp\'@\'%\' IDENTIFIED BY \'NewSecurePassword789!\';FLUSH PRIVILEGES;
4. 审计日志
-- 启用查询日志SET GLOBAL general_log = \'ON\';SET GLOBAL general_log_file = \'/var/log/mysql/cursor_mcp.log\';-- 启用慢查询日志SET GLOBAL slow_query_log = \'ON\';SET GLOBAL long_query_time = 2;
🔧 故障排查
创建诊断脚本
// diagnose-mcp.jsconst mysql = require(\'mysql2/promise\');async function testConnection() { const config = { host: process.env.MYSQL_HOST || \'localhost\', port: process.env.MYSQL_PORT || 3306, user: process.env.MYSQL_USER, password: process.env.MYSQL_PASS, database: process.env.MYSQL_DB }; try { console.log(\'🔍 测试数据库连接...\'); const connection = await mysql.createConnection(config); console.log(\'✅ 连接成功!\'); // 测试权限 const [tables] = await connection.execute(\'SHOW TABLES\'); console.log(\'📊 可访问的表:\', tables.length); // 测试插入权限 try { await connection.execute(\'CREATE TEMPORARY TABLE test_permissions (id INT)\'); await connection.execute(\'INSERT INTO test_permissions VALUES (1)\'); console.log(\'✅ INSERT 权限正常\'); await connection.execute(\'UPDATE test_permissions SET id = 2 WHERE id = 1\'); console.log(\'✅ UPDATE 权限正常\'); await connection.execute(\'DELETE FROM test_permissions WHERE id = 2\'); console.log(\'✅ DELETE 权限正常\'); } catch (error) { console.log(\'⚠️ 写权限受限:\', error.message); } await connection.end(); } catch (error) { console.error(\'❌ 连接失败:\', error.message); }}// 设置环境变量后运行testConnection();
运行诊断
# 设置环境变量$env:MYSQL_HOST=\"localhost\"$env:MYSQL_USER=\"cursor_mcp\"$env:MYSQL_PASS=\"YourPassword\"$env:MYSQL_DB=\"your_database\"# 安装依赖并运行诊断npm install mysql2node diagnose-mcp.js
📋 完整配置清单
✅ 配置检查清单
- Node.js 已安装(>=16)
- MySQL 服务正在运行
- MCP 包安装成功
- 数据库用户已创建
- 权限已正确授予
-
.cursor/mcp.json
配置正确 - 环境变量设置正确
- Cursor 中 MCP 状态为绿色
- 基础查询测试成功
- 写操作权限测试成功
📝 配置模板
{ \"mcpServers\": { \"mysql\": { \"command\": \"npx\", \"args\": [\"-y\", \"@benborla29/mcp-server-mysql\"], \"env\": { \"MYSQL_HOST\": \"YOUR_HOST\", \"MYSQL_PORT\": \"YOUR_PORT\", \"MYSQL_USER\": \"YOUR_USERNAME\", \"MYSQL_PASS\": \"YOUR_PASSWORD\", \"MYSQL_DB\": \"YOUR_DATABASE\", \"ALLOW_INSERT_OPERATION\": \"true\", \"ALLOW_UPDATE_OPERATION\": \"true\", \"ALLOW_DELETE_OPERATION\": \"true\", \"ALLOW_CREATE_OPERATION\": \"true\", \"ALLOW_ALTER_OPERATION\": \"true\", \"ALLOW_DROP_OPERATION\": \"true\", \"MYSQL_SSL\": \"false\", \"MYSQL_POOL_SIZE\": \"10\", \"MYSQL_QUERY_TIMEOUT\": \"30000\", \"PATH\": \"C:\\\\Program Files\\\\nodejs;C:\\\\Windows\\\\System32\" } } }}
🎯 实际应用场景
1. 开发辅助
\"创建用户测试数据,包含10个不同部门的员工\"\"为所有测试订单添加随机的创建时间\"\"清理开发环境中的过期session数据\"
2. 数据分析
\"分析用户注册趋势,按月统计最近一年的数据\"\"找出回购率最高的客户群体\"\"生成产品销量排行榜,包含销售额和利润率\"
3. 数据维护
\"批量更新用户头像URL,将HTTP改为HTTPS\"\"合并重复的商品记录,保留最新的价格信息\"\"归档6个月前的订单数据到历史表\"
4. 报表生成
\"生成月度财务报表,包含收入、支出和利润\"\"创建库存预警报告,显示低于安全库存的商品\"\"统计客服工单处理效率,按处理人员分组\"
💡 总结
配置完成后,您将获得:
🚀 效率提升
- 自然语言操作数据库
- 智能SQL生成和优化
- 一键数据分析和报告
🛡️ 安全可靠
- 精确的权限控制
- 完整的操作日志
- 多层安全防护
🔧 灵活强大
- 支持复杂业务逻辑
- 多环境配置管理
- 扩展性强
现在您可以在 Cursor 中直接对话AI,让它帮您完成各种数据库操作,从简单查询到复杂的数据分析,都能通过自然语言轻松实现!