mysql环境搭建后权限如何分配_mysql权限规划说明

来源:这里教程网 时间:2026-02-28 20:45:28 作者:

MySQL安装完成后,权限不能全给root,也不能全不给——得按角色分清楚,谁该看什么、能改哪些、能不能删库,必须提前规划好。

基础权限分层原则

权限设计要遵循最小必要原则:只给业务实际需要的权限,不因图省事而授予权限过大。

超级管理员(如root):仅用于初始化、灾备恢复、全局配置调整,日常不登录使用 应用账号:限定到具体数据库,只开放SELECT/INSERT/UPDATE/DELETE,禁用DROP、CREATE、ALTER、GRANT等高危操作 运维账号:可查性能状态(SHOW PROCESSLIST、SHOW STATUS)、管理慢日志、执行备份命令,但不可访问业务数据表 开发/测试账号:仅限开发库,允许建表、删表、清空数据,但禁止访问生产库及系统库(mysql、information_schema等)

常用权限分配示例

以一个电商系统为例,假设业务库名为ecommerce_db

应用连接账号:
GRANT SELECT, INSERT, UPDATE, DELETE ON ecommerce_db.* TO 'app_user'@'192.168.10.%' IDENTIFIED BY 'pwd123';
报表查询账号:
GRANT SELECT ON ecommerce_db.orders TO 'report_user'@'10.0.5.%';
(只查orders表)
DBA维护账号:
GRANT RELOAD, PROCESS, SHOW DATABASES, LOCK TABLES ON *.* TO 'dba_admin'@'10.0.1.%';
(不碰业务数据)
禁止远程root登录:
UPDATE mysql.user SET host='localhost' WHERE user='root' AND host!='localhost'; FLUSH PRIVILEGES;

权限回收与定期审计要点

权限不是设一次就完事,需持续管理:

离职或转岗人员账号立即禁用:
REVOKE ALL PRIVILEGES ON *.* FROM 'old_user'@'%'; DROP USER 'old_user'@'%';
每季度检查高危权限持有者:
SELECT user,host,Select_priv,Insert_priv,Drop_priv,Create_priv,Grant_priv FROM mysql.user WHERE Drop_priv='Y' OR Grant_priv='Y';
避免通配符滥用:不用
'%'@'%'
,优先绑定内网IP段或跳板机地址
密码策略同步启用:
ALTER USER 'app_user'@'%' PASSWORD EXPIRE INTERVAL 90 DAY;

权限生效与验证方式

赋权后必须验证是否生效,且确认实际行为符合预期:

执行
FLUSH PRIVILEGES;
确保内存权限表刷新(部分版本自动刷新,但显式执行更稳妥)
用对应账号登录后,运行
SHOW GRANTS;
查看当前权限清单
模拟业务操作验证:比如用app_user尝试
DROP TABLE products;
,应明确报错Access denied
检查错误日志:
tail -f /var/log/mysql/error.log
,留意拒绝类记录(Access denied for user)

相关推荐