一、核心逻辑
创建用户(指定访问地址:本地localhost / 任意%)
授予该数据库全部权限(增删改查、建表、建索引、存储过程等完整管理权限)
刷新权限生效
二、完整执行语句(分步复制执行)
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';
五、关键注意事项
权限隔离:该用户只能操作test库,无法访问其他数据库、无法操作全局配置;
地址匹配:创建用户和授权的@xxx地址必须完全一致,否则权限不生效;
MySQL8.x 兼容:上面语句适配 MySQL8.0+,不再支持老旧IDENTIFIED WITH mysql_native_password语法,如需兼容旧客户端可额外指定:
CREATE USER 'test_user'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
如果你之前遇到 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;