Cursor MySQL MCP 完整操作配置指南

概述

本指南帮助您在 Windows 环境下配置 Cursor 编辑器的 MySQL MCP 服务器,实现通过 AI 助手对数据库进行完整的增删改查操作

功能特性:

  • ✅ 自然语言数据库查询
  • ✅ 智能数据插入和更新
  • ✅ 安全的数据删除操作
  • ✅ 自动数据分析和报告生成

快速配置

1. 环境检查

# 检查必要组件
node --version     # Node.js >= 16
mysql --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. 重启验证

  1. 完全关闭 Cursor 编辑器
  2. 重新打开 Cursor
  3. 进入 Settings > MCP
  4. 确认 mysql 服务器状态为绿色
  5. 在聊天窗口测试:显示数据库中的所有表

完整操作示例

数据查询

"显示所有用户表的记录"
"查询最近7天注册的用户"
"统计每个部门的员工数量"
"分析上个月的销售趋势"
"找出最受欢迎的产品类型"

数据插入

"在用户表中添加新用户:姓名'张三',邮箱'[email protected]',部门'开发部'"

"批量插入测试数据:
- 用户1:李四,[email protected],销售部
- 用户2:王五,[email protected],市场部"

"创建一个新订单,客户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.js
const 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 mysql2
node 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,让它帮您完成各种数据库操作,从简单查询到复杂的数据分析,都能通过自然语言轻松实现!

你可能感兴趣的:(开发分享,mcp,cursor,mysql)