整体目标

创建受限全能账号:仅在指定数据库内拥有建库/删库、建表/删表、改表、增删改查全部权限;通过MCP协议打通Claude Code,AI可自然语言写SQL、执行DDL/DML、配合项目开发。

前置检查

  1. MySQL服务正常启动(端口默认3306)
  2. 安装 Node.js 18+(终端执行 npx -v 验证可用)
  3. 已安装配置好 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:手动修改配置文件(自定义度更高)

  1. 找到配置文件

    • Windows:%USERPROFILE%\.claude\settings.json
    • Mac/Linux:~/.claude/settings.json
  2. 写入如下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连接是否正常

  1. 终端查看MCP列表
claude mcp list

✅ 正常状态:mysql: Connected
❌ 显示Failed:跳到文末排错方案

  1. 在Claude Code聊天框输入指令查看可用工具
/mcp

出现 mysql 服务、execute_query 执行SQL工具 = 配置完成


步骤4:项目开发使用方式(自然语言操控数据库)

直接在Claude对话发送自然语言,AI自动分析表结构、生成+执行SQL,适配项目开发

常用开发指令示例

  1. 查看库所有表、表结构
列出当前数据库全部数据表,查看user表完整字段、主键、注释
  1. 新建业务表(DDL建表)
创建用户表user,包含自增主键id、用户名、手机号、创建时间、状态字段,设置合理索引
  1. 修改表结构
给user表新增age年龄字段,默认值null
  1. 增删改查业务数据
插入3条测试用户数据,统计总用户数量
  1. 自建/删除数据库(开了CREATE/DROP权限可用)
新建数据库order_db,创建订单主表
  1. 反向生成项目代码
基于user表,生成SpringBoot + MyBatis完整实体类、Mapper、CRUD接口代码

权限设计说明(适配项目安全)

  1. GRANT ALL ON project_db.*
    ✅ 可:建表、删表、改表、增删改查、创建索引/视图
    ❌ 不可:操作mysql系统库、其他业务数据库

  2. 额外 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

常见报错快速排错

  1. spawn npx ENOENT
    Node.js未安装/未配置环境变量,重装Node后新开终端重试

  2. Access denied for user project_operator@localhost
    核对账号密码、数据库名,重新执行FLUSH PRIVILEGES;刷新权限

  3. MCP一直Failed连接失败
    手动执行 npx -y @modelcontextprotocol/server-mysql 看详细报错;Windows必须用cmd /c npx格式启动

  4. 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;
Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐