首页/数据/数据库速查/账号安全基线检查清单

账号安全基线检查清单

一次巡检覆盖:匿名用户、空密码、% 通配、过期凭据、过度授权、锁定账号与遗留测试账号,输出可复核的整改单。

数据库速查数据更新于 2026-10-13

账号安全基线是什么

一条可定期执行的巡检清单,覆盖匿名账号、空密码、全通配来源、凭据过期、过度授权、锁定与遗留测试账号。目标是输出一份可复核的整改单:谁、什么权限、为什么是问题、怎么改,而不是笼统地说「权限有点乱」。

基本信息

检查对象mysql.user 与权限相关视图
必查项匿名账号、空密码、来源为百分号通配、账号锁定状态
权限视图information_schema.user_privileges 与 schema_privileges
执行频率每月一次例行,权限变更后立即执行
产出物问题清单加责任人与整改时限

巡检项与整改方向

  • 匿名账号:user 为空但能连接的账号,确认无业务依赖后删除
  • 空密码账号:关注本地专用账号与测试残留,逐个确认后处理
  • 来源为百分号:确认是否真的是外部应用需要,否则收敛到具体网段
  • 过度授权:普通业务账号出现全局权限或授权权限,按最小权限重授权
  • 长期锁定或过期账号:确认是否为离职人员或废弃应用,清理并留档
  • 遗留测试账号:命名含测试、临时字样的账号,确认后下线

基线检查 SQL

基线检查 SQL
-- 匿名账号与空密码
SELECT user, host, authentication_string FROM mysql.user WHERE user = '' OR authentication_string = '';
-- 来源为全通配的账号
SELECT user, host FROM mysql.user WHERE host = '%';
-- 锁定与过期状态
SELECT user, host, account_locked, password_expired FROM mysql.user;
-- 非管理员的全局权限
SELECT grantee, privilege_type FROM information_schema.user_privileges
WHERE grantee NOT LIKE "'root'%";
-- 拥有授权权限的账号(可自行提权,重点复核)
SELECT grantee, privilege_type FROM information_schema.user_privileges
WHERE privilege_type IN ('GRANT OPTION','SUPER','SYSTEM_VARIABLES_ADMIN','CONNECTION_ADMIN');

风险项与处置

风险项判定处置
空密码账号authentication_string 为空且非本地专用立即设密码或删除
全通配来源host 为百分号收敛到业务网段或加访问控制
全局权限业务账号持有全局管理权限回收后按库按表重授权
授权权限账号持有 GRANT OPTION回收,改由管理员统一授权
长期未用账号无活跃连接且无归属确认后禁用再删除
把巡检固化成脚本定期跑,比一年一次的大检查更能暴露缓慢积累的权限漂移。
回收权限前先确认归属与依赖:生产事故中相当一部分来自「以为没人用」的账号被删掉后业务报错。

易错点

  • 发现空密码账号一律删除:系统内置的本地专用账号被误删后实例功能异常
  • 整改不做记录:删掉的账号被自动化脚本重新建回来,问题反复出现
  • 只看账号不看授权对象:账号收敛了但权限仍可通过库级或列级授权放大
  • 巡检只跑一次不做定期:权限漂移是持续过程,一次性检查很快失效

数据来源与参考

  • MySQL 8.0 Reference Manual: Access Control, Stage 1: Connection Verification

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌