目录
MySQL数据库使用root账号为test账号分配权限的标准操作流程及注意事项:
基础权限分配
1、root用户登录,
输入root密码后进入MySQL命令行环境
mysql -u root -p
2、用户存在性校验
SELECT user,host FROM mysql.user WHERE user='test';
若用户不存在需先创建用户
3、创建用户(如不存在)
CREATE USER 'test'@'%' IDENTIFIED BY 'your_password';
%表示允许远程连接,localhost限制本地访问
4、权限授予操作
GRANT <privileges> ON <database>.<table> TO 'test'@'%';
全局只读权限:
GRANT SELECT ON *.* TO 'test'@'%';
指定数据库全权限:
GRANT ALL PRIVILEGES ON test_db.* TO 'test'@'%';
表级权限控制:
GRANT INSERT,UPDATE ON school.student TO 'test'@'192.168.1.%';
5、权限刷新
FLUSH PRIVILEGES;
6、权限验证
查看已赋权限
SHOW GRANTS FOR 'test'@'%';
SELECT * FROM db1.tb1; -- 验证查询权限
INSERT INTO db1.tb1(...) VALUES(...); -- 验证写入权限
如操作中出现
ERROR 1045 (28000)
错误,需检查用户host匹配规则及密码是否正确。建议生产环境通过数据库审计功能记录权限变更操作
权限级别对照表
权限类型 | 命令示例 | 适用场景 |
---|---|---|
全局权限 | GRANT SELECT ON *.* |
跨库只读监控 |
数据库级权限 | GRANT ALL ON db1.* |
特定库完全控制 |
表级权限 | GRANT INSERT ON db1.tb1 |
精细化权限管理 |
列级权限 | GRANT SELECT(col1) ON tb1 |
敏感字段保护 |
存储过程权限 | GRANT EXECUTE ON PROCEDURE |
业务逻辑封装 |
安全事项
最小权限原则
避免使用GRANT ALL PRIVILEGES
,按需分配SELECT/INSERT/UPDATE
等细粒度权限
访问控制限制
- 指定IP段:
'test'@'192.168.1.%'
- 禁止远程访问:
'test'@'localhost'
密码策略
使用IDENTIFIED BY
设置强密码(建议12位以上含特殊字符)
权限回收方法
REVOKE DELETE ON db1.* FROM 'test'@'%';
