Skip to content

MySQL权限管理宝库 🔐

🗝️ 数据库金库手册

在这里你将掌握:

  • 用户账号的诞生与退休 👶→👴
  • 权限钥匙的颁发与回收 🗝️
  • 角色套装的穿搭艺术 👔
  • 安全防护的终极奥义 🛡️

1. 用户生命周期管理 👤

🧑💼 用户管理员的三件套

sql
-- 创建新用户(带密码保险箱)
CREATE USER '实习生'@'%' IDENTIFIED BY 'Pass123!';

-- 用户升职加薪(修改密码)
ALTER USER '老员工'@'localhost' IDENTIFIED BY 'NewSecurePwd2023!';

-- 用户光荣退休
DROP USER '临时工'@'192.168.1.%';

🚨 新手安全课

sql
-- 错误示范:弱密码
CREATE USER 'test'@'%' IDENTIFIED BY '123456'; ❌
-- 正确姿势:最少8位+大小写+特殊字符
CREATE USER 'admin'@'localhost' IDENTIFIED BY 'P@ssw0rd!2023'; ✅

2. 权限钥匙分发中心 🔑

⚡ 最小权限原则

只给必要的权限! 就像不会给实习生CEO权限

sql
-- 给查户口的权限(SELECT)
GRANT SELECT ON 电商库.* TO '分析师'@'%';

-- 给店铺管理权限(多权限组合)
GRANT INSERT, UPDATE, DELETE 
ON 店铺管理.订单表 
TO '店长'@'192.168.1.100';
sql
-- 收回删除权限(防止手滑)
REVOKE DELETE ON 重要数据.* FROM '萌新'@'%';

-- 没收所有权限(停职检查)
REVOKE ALL PRIVILEGES ON *.* FROM '问题员工'@'localhost';

常用权限钥匙串 🔑

权限名称作用范围类比说明
SELECT表/视图查看保险柜内容
INSERT表/列往保险柜放新物品
UPDATE表/列修改保险柜物品
DELETE丢弃保险柜物品
CREATE数据库/表新建保险柜
DROP数据库/表粉碎保险柜
GRANT OPTION数据库/表可以复制自己的钥匙

3. 角色套装管理 👔

🎭 角色扮演的艺术

sql
-- 创建角色套装
CREATE ROLE '财务部', '市场部', '技术部';

-- 给角色配权限(批量管理)
GRANT SELECT, INSERT ON 销售数据.* TO '市场部';
GRANT ALL PRIVILEGES ON 技术文档.* TO '技术部';

-- 给用户穿角色套装
GRANT '市场部' TO '张三'@'localhost';

-- 脱掉角色套装
REVOKE '技术部' FROM '李四'@'%';

4. 权限查看中心 🔍

sql
-- 查看自己的权限
SHOW GRANTS;

-- 查看其他用户的权限
SHOW GRANTS FOR '店长'@'192.168.1.100';

-- 查看角色权限详情
SHOW GRANTS FOR '技术部';

5. 实战演练:电商系统权限设计 🛒

sql
-- 创建客服账号
CREATE USER '客服_小美'@'callcenter.xxx.com' 
IDENTIFIED BY 'Kf@2023#Secure';

-- 授予基础权限
GRANT SELECT ON 订单系统.订单表 TO '客服_小美'@'callcenter.xxx.com';
GRANT UPDATE (订单状态, 备注) ON 订单系统.订单表 TO '客服_小美'@'callcenter.xxx.com';

-- 创建运维角色
CREATE ROLE 'dba_role';
GRANT ALL PRIVILEGES ON *.* TO 'dba_role' WITH GRANT OPTION;

-- 绑定角色到账号
GRANT 'dba_role' TO '首席DBA'@'localhost';

🚨 安全红宝书

  1. 定期审查权限:每季度检查一次权限分配
  2. 禁用root远程登录:就像不会把金库密码贴门口
  3. 遵循最小权限原则:新人只给查看权限
  4. 使用角色管理:批量调整部门权限更方便
  5. 记录操作日志:开启general_log追踪可疑操作

🎩 高级技巧

sql
-- 设置密码过期策略(90天强制更换)
ALTER USER '财务主管'@'%' 
PASSWORD EXPIRE INTERVAL 90 DAY;

-- 锁定可疑账号
ALTER USER '可疑账号'@'%' ACCOUNT LOCK;

-- 查看当前登录用户
SELECT USER(), CURRENT_USER();

📜 权限管理顺口溜

创建用户要授权,最小权限是标杆
角色管理真方便,批量调整省时间
定期检查除隐患,密码强度要过关
日志记录不能少,安全审计保平安