完整版分步教程:Claude Code 可控操作本地MySQL(项目开发专用)
整体目标
创建受限全能账号:仅在指定数据库内拥有建库/删库、建表/删表、改表、增删改查全部权限;通过MCP协议打通Claude Code,AI可自然语言写SQL、执行DDL/DML、配合项目开发。
前置检查
- MySQL服务正常启动(端口默认3306)
- 安装 Node.js 18+(终端执行
npx -v验证可用) - 已安装配置好 Claude Code CLI
步骤1:Root登录MySQL,创建专用数据库账号
打开终端/Navicat执行登录
mysql -u root -p
1.1 创建操作账号(本地访问,最安全)
-- 创建账号:project_operator,密码自行修改
CREATE USER 'project_operator'@'localhost' IDENTIFIED BY 'Project@123456';
如需后续远程调试,替换为:
CREATE USER 'project_operator'@'%' IDENTIFIED BY 'Project@123456';
1.2 定义目标业务库(替换为你的项目库名,示例:project_db)
-- 先创建项目数据库(root一次性建好)
CREATE DATABASE IF NOT EXISTS project_db DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
1.3 授予库内表级全部权限(增删改查、建表、删表、改表、索引、视图)
-- 仅 project_db 库内完全自由操作表
GRANT ALL PRIVILEGES ON `project_db`.* TO 'project_operator'@'localhost';
1.4 【可选:允许账号自建/删除数据库】
如果你需要 Claude 自己新建库、删除库,执行下面这条(本地开发推荐,生产不建议)
-- 仅开放全局建库、删库两个权限,不会拥有全局数据读写权限
GRANT CREATE, DROP ON *.* TO 'project_operator'@'localhost';
1.5 权限生效
FLUSH PRIVILEGES;
exit;
1.6 验证账号有效性
mysql -u project_operator -p
# 输入密码 Project@123456,能正常登录即账号配置完成
# 测试:use project_db; create table test(id int); drop table test;
步骤2:安装配置 MySQL MCP 服务(Claude调用数据库核心)
MCP = Model Context Protocol,让Claude具备调用SQL执行工具的能力
方式A:命令行一键添加(推荐新手)
Windows CMD/PowerShell
# 全局配置(所有项目共用这个数据库连接)
claude mcp add --scope user mysql ^
-e MYSQL_HOST=localhost ^
-e MYSQL_PORT=3306 ^
-e MYSQL_USER=project_operator ^
-e MYSQL_PASSWORD=Project@123456 ^
-e MYSQL_DATABASE=project_db ^
-- cmd /c npx -y @modelcontextprotocol/server-mysql
Mac / Linux 终端
claude mcp add --scope user mysql \
-e MYSQL_HOST=localhost \
-e MYSQL_PORT=3306 \
-e MYSQL_USER=project_operator \
-e MYSQL_PASSWORD=Project@123456 \
-e MYSQL_DATABASE=project_db \
-- npx -y @modelcontextprotocol/server-mysql
方式B:手动修改配置文件(自定义度更高)
-
找到配置文件
- Windows:
%USERPROFILE%\.claude\settings.json - Mac/Linux:
~/.claude/settings.json
- Windows:
-
写入如下JSON(已有内容合并
mcpServers节点,不要嵌套两层{})
{
"mcpServers": {
"mysql": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-mysql"],
"env": {
"MYSQL_HOST": "localhost",
"MYSQL_PORT": "3306",
"MYSQL_USER": "project_operator",
"MYSQL_PASSWORD": "Project@123456",
"MYSQL_DATABASE": "project_db"
}
}
}
}
步骤3:校验MCP连接是否正常
- 终端查看MCP列表
claude mcp list
✅ 正常状态:mysql: Connected
❌ 显示Failed:跳到文末排错方案
- 在Claude Code聊天框输入指令查看可用工具
/mcp
出现 mysql 服务、execute_query 执行SQL工具 = 配置完成
步骤4:项目开发使用方式(自然语言操控数据库)
直接在Claude对话发送自然语言,AI自动分析表结构、生成+执行SQL,适配项目开发
常用开发指令示例
- 查看库所有表、表结构
列出当前数据库全部数据表,查看user表完整字段、主键、注释
- 新建业务表(DDL建表)
创建用户表user,包含自增主键id、用户名、手机号、创建时间、状态字段,设置合理索引
- 修改表结构
给user表新增age年龄字段,默认值null
- 增删改查业务数据
插入3条测试用户数据,统计总用户数量
- 自建/删除数据库(开了CREATE/DROP权限可用)
新建数据库order_db,创建订单主表
- 反向生成项目代码
基于user表,生成SpringBoot + MyBatis完整实体类、Mapper、CRUD接口代码
权限设计说明(适配项目安全)
-
GRANT ALL ON project_db.*
✅ 可:建表、删表、改表、增删改查、创建索引/视图
❌ 不可:操作mysql系统库、其他业务数据库 -
额外
GRANT CREATE,DROP ON *.*
✅ 可:自行执行CREATE DATABASE / DROP DATABASE
⚠️ 风险:语法上能删除服务器任意库,仅个人本地开发开启,生产环境禁止
权限对比表格
下表清晰展示了 project_operator 账号在不同授权方案下的权限差异:
| 操作权限 | 仅库内权限 (GRANT ALL ON project_db.*) |
额外开启 CREATE/DROP (GRANT CREATE,DROP ON *.*) |
Root 账号 (对比参考) |
|---|---|---|---|
| project_db 库内操作 | |||
| - 建表/删表/改表 | ✅ | ✅ | ✅ |
| - 增删改查数据 | ✅ | ✅ | ✅ |
| - 创建索引/视图 | ✅ | ✅ | ✅ |
| - 执行存储过程/函数 | ✅ | ✅ | ✅ |
| 其他业务库操作 | |||
| - 访问其他业务库 | ❌ | ❌ | ✅ |
| - 在其他库建表/删表 | ❌ | ❌ | ✅ |
| mysql 系统库操作 | |||
| - 访问 mysql 系统库 | ❌ | ❌ | ✅ |
| - 修改用户权限表 | ❌ | ❌ | ✅ |
| 全局数据库操作 | |||
- 创建新数据库 (CREATE DATABASE) |
❌ | ✅ | ✅ |
- 删除任意数据库 (DROP DATABASE) |
❌ | ✅ | ✅ |
| - 查看所有数据库 | ❌ | ⚠️ (仅能看到自己有权限的) | ✅ |
| 服务器级操作 | |||
| - 创建/删除用户 | ❌ | ❌ | ✅ |
| - 修改服务器配置 | ❌ | ❌ | ✅ |
| - 重启 MySQL 服务 | ❌ | ❌ | ❌ (需系统权限) |
权限方案选择建议:
- 开发环境:推荐「仅库内权限 + 额外 CREATE/DROP」,便于项目迭代
- 测试环境:建议「仅库内权限」,防止误删其他测试库
- 生产环境:严格使用「仅库内权限」,禁止开启 CREATE/DROP
常见报错快速排错
-
spawn npx ENOENT
Node.js未安装/未配置环境变量,重装Node后新开终端重试 -
Access denied for user project_operator@localhost
核对账号密码、数据库名,重新执行FLUSH PRIVILEGES;刷新权限 -
MCP一直Failed连接失败
手动执行npx -y @modelcontextprotocol/server-mysql看详细报错;Windows必须用cmd /c npx格式启动 -
Claude识别不到数据库工具
执行/mcp确认mysql已启用,重启Claude Code客户端
后期账号权限回收(不用时执行)
-- 回收库内所有权限
REVOKE ALL PRIVILEGES ON `project_db`.* FROM 'project_operator'@'localhost';
-- 回收全局建删库权限(如有)
REVOKE CREATE, DROP ON *.* FROM 'project_operator'@'localhost';
-- 删除账号
DROP USER IF EXISTS 'project_operator'@'localhost';
FLUSH PRIVILEGES;
更多推荐

所有评论(0)