课程名称:MySQL面试指南
课程章节:MySQL如何保证用户账号安全
主讲老师:sqlercn
课程内容:
今天学习的内容包括:
数据库用户管理流程规范
密码管理策略
课程收获:
数据库用户管理流程规范
- 不能把包含数据库账号密码的文件上传到Git库中
- 最小权限原则,不过度授权
- 密码强度策略,数字加字母,注意特殊字符在部分程序中的特殊意义,避免程序无法使用
- 密码过期原则,MySQL5.7中引入了密码过期设置,使用这个需要程序端支持到期提示,否则有风险
- 限制历史密码重用原则,MySQL8.0中引入了密码重复使用次数设置
密码管理策略
MySQL 的 mysql.user 表中一个用户的 password_expired 的值默认是 N(No的意思)。
password_expired 字段的类型是 enum(‘Y’,‘N’) 枚举类型,创建表的时候这样定义:
create table mysql.user (
...
`password_expired` enum('N','Y') NOT NULL DEFAULT 'N',
...
);
让用户的密码过期,设置用户密码过期后,用户依然可以登录,但执行语句的时候会提示密码已过期。
alter user test@localhost password expire;
修改用户的密码,可以通过 user() 函数来获得当前登录的用户账户。
alter user user() identified by '1234';