一、过度授权问题
常见错误是为数据库账户授予不必要的全局权限(如ALL PRIVILEGES),特别是生产环境中直接使用root账户进行业务操作。这会导致潜在的安全风险,一旦账户泄露将造成整个数据库的失控。
- 错误案例:开发人员为调试方便开放%域名的远程连接权限
- 正确做法:遵循最小权限原则,按业务需求分配特定库表权限
二、权限分配粒度不足
部分管理员仅使用GRANT
语句分配粗粒度权限,忽略对具体操作权限(SELECT/INSERT/UPDATE)的精确控制。这可能导致应用程序获得超出需求的写权限,增加误操作风险。
- 典型错误配置:
GRANT ALL ON db.* TO 'user'@'localhost'
- 推荐配置:
GRANT SELECT, INSERT ON db.table TO 'user'@'192.168.1.%'
三、未及时回收权限
人员岗位变动或业务下线后未执行REVOKE
操作,导致存在大量僵尸账户。统计显示约34%的数据库泄露事件与废弃账户权限相关。
四、忽视默认账户安全
新安装数据库时未修改默认密码或删除测试账户(如MySQL的匿名账户),攻击者可通过默认凭证直接获取访问权限。建议部署后立即执行:
- 删除匿名账户:
DROP USER ''@'localhost'
- 修改root账户名称:
RENAME USER root TO admin_ops
五、缺乏审计机制
未开启数据库操作日志记录,导致异常权限变更无法追溯。应定期检查:
- mysql.user表的权限变更记录
- 数据库连接日志中的异常IP访问
- 权限继承关系(特别是角色权限体系)
合理的权限配置应遵循最小授权原则,建立权限申请/回收流程,并配合定期审计。建议使用自动化配置工具规范操作,避免直接修改数据库权限表。