MySQL 创建仅管理单个数据库的专属用户

MySQL 创建仅管理单个数据库的专属用户

一、核心逻辑

  1. 创建用户(指定访问地址:本地localhost​ / 任意%​)

  2. 授予该数据库​全部权限​(增删改查、建表、建索引、存储过程等完整管理权限)

  3. 刷新权限生效

二、完整执行语句(分步复制执行)

1. 登录 MySQL root 管理员

mysql -uroot -p

2. 创建用户

场景 A:仅本地客户端连接(推荐,更安全)

用户名:test_user​,密码:123456​

CREATE USER 'test_user'@'localhost' IDENTIFIED BY '123456';

场景 B:任意 IP 都能连接(远程开发 / 服务器互通)

CREATE USER 'test_user'@'%' IDENTIFIED BY '123456';

3. 授予单个库完整管理权限

目标数据库:test​(替换成你的库名)

GRANT ALL PRIVILEGES ON test.* TO 'test_user'@'localhost';
  • ​test.*​:代表test​库下所有表、视图、存储过程

  • ​ALL PRIVILEGES​:包含建库、删表、索引、事务、存储过程等全部管理权限

如果是远程用户,把末尾 @'localhost'​ 改成 @'%'​,和创建用户保持一致

4. 刷新权限(必须执行,否则不生效)

FLUSH PRIVILEGES;

三、验证权限是否生效

1. 查看用户权限

SHOW GRANTS FOR 'test_user'@'localhost';

输出会显示:GRANT ALL PRIVILEGES ON ​test.* TO ​test_user@​localhost``

2. 切换新用户登录测试

mysql -utest_user -p123456
use test;
create table demo(id int); -- 测试建表,无报错即权限正常
create database xxx; -- 会报错,无法创建其他库,符合需求

四、常用配套操作

1. 修改用户密码

ALTER USER 'test_user'@'localhost' IDENTIFIED BY '新密码';
FLUSH PRIVILEGES;

2. 回收权限

REVOKE ALL PRIVILEGES ON test.* FROM 'test_user'@'localhost';
FLUSH PRIVILEGES;

3. 删除用户

DROP USER IF EXISTS 'test_user'@'localhost';

五、关键注意事项

  1. ​权限隔离​:该用户只能操作test​库,无法访问其他数据库、无法操作全局配置;

  2. ​地址匹配​:创建用户和授权的@xxx​地址必须完全一致,否则权限不生效;

  3. MySQL8.x 兼容:上面语句适配 MySQL8.0+,不再支持老旧IDENTIFIED WITH mysql_native_password​语法,如需兼容旧客户端可额外指定:

CREATE USER 'test_user'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
  1. 如果你之前遇到 Permission denied​ 建库报错:用 root 账号执行上面授权语句后,新用户就能正常在test​库里建表、删表、修改结构。

六、极简一键脚本(直接替换库名 / 用户名 / 密码)

-- 替换 test(库) test_user(账号) 123456(密码)
CREATE USER 'test_user'@'localhost' IDENTIFIED BY '123456';
GRANT ALL PRIVILEGES ON test.* TO 'test_user'@'localhost';
FLUSH PRIVILEGES;

ArrayList讲解 2026-07-15