持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第1天,点击查看活动详情
前言
上篇我们学习了MySQL中的用户管理。有兴趣的小伙伴可以阅读(# MySQL学习-用户管理(一))。
下面我们继续学习MySQL中的用户管理。
用户管理
设置当前用户的密码
方法适用于root用户修改自己的密码,以及普通用户登录后修改自己的密码。
由于root用户拥有很高的权限,因此需要保证root用户的密码安全。root用户可以通过多种方式来修改密码,使用ALTER USER修改用户密码是MySQL官方推荐的方式。另外也可以通过SET语句修改密码。MySQL8中已经移除了PASSWORD函数,因此不再使用UPDATE语句直接操作用户表修改密码。
- 方法一:使用ALTER语句修改密码
ALTER USER USER() IDENTIFIED BY 'new_password';
- 方法二:使用SET语句修改密码
SET PASSWORD = 'new_password';
修改其他用户密码
使用root登录后可以修改其他用户的密码。
- 方法一:使用ALTER语句修改密码
ALTER USER user IDENTIFIED BY 'new_password'
, user IDENTIFIED BY 'new_password'
, user IDENTIFIED BY 'new_password'...;
- 方法二:使用SET语句修改密码
SET PASSWORD FOR 'username'@'hostname' = 'new_password';
MySQL8密码管理
密码过期策略
- MySQL中,数据库管理员可以手动设置账号密码过期,也可以建立一个自动密码过期策略。
- 过期策略可以是全局的,也可以为每个账号设置单独的过期策略。
全局设置
语法如下:
ALTER USER user PASSWORD EXPIRE;
修改变量,并持久化。
- 方式一:使用SQL语句更改变量并持久化
SET PERSIST default_passwoed_lifetime = 365;#创建全局策略,设置密码每隔365天过期
- 方式二:配置文件my.cnf中进行维护
default_passwoed_lifetime=365#创建全局策略,设置密码每隔365天过期。
单独设置
每个账号既可延用全局策略,也可单独设置策略。在CREATE USER和ALTER USER语句上加入PASSWORD EXPIRE选项可以实现单独设置策略。
示例:
- 设置yuanyuanlanlan账号密码180天过期
CREATE USER 'yuanyuanlanlan'@'localhost' PASSWORD EXPIRE INTERVAL 180 DAY;
ALTER USER 'yuanyuanlanlan'@'localhost' PASSWORD EXPIRE INTERVAL 180 DAY;
- 设置密码不过期
CREATE USER 'yuanyuanlanlan'@'localhost' PASSWORD EXPIRE INTERVAL NEVER;
ALTER USER 'yuanyuanlanlan'@'localhost' PASSWORD EXPIRE INTERVAL NEVER;
- 设置密码延用全局密码过期策略
CREATE USER 'yuanyuanlanlan'@'localhost' PASSWORD EXPIRE DEFAULT;
ALTER USER 'yuanyuanlanlan'@'localhost' PASSWORD EXPIRE DEFAULT;
密码重用
全局设置
- 方式一:使用SQL
SET PERSIST password_history = 6;#设置不能选择最近使用过的6个密码
SET PERSIST password_reuse_interval = 365;@设置不能选择最近一年内的密码
- 方式二:my.cnf配置文件
password_history=6#设置不能选择最近使用过的6个密码
password_reuse_interval=365@设置不能选择最近一年内的密码
单独设置
- 不能使用最近6个密码
CREATE USER 'yuanyuanlanlan'@'localhost' PASSWORD HISTORY 6;
ALTER USER 'yuanyuanlanlan'@'localhost' PASSWORD HISTORY 6;
- 不能使用最近一年的密码
CREATE USER 'yuanyuanlanlan'@'localhost' PASSWORD REUSE INTERVAL 365 DAY;
ALTER USER 'yuanyuanlanlan'@'localhost' PASSWORD REUSE INTERVAL 365 DAY;
- 同时不能使用最近6个密码和最近一年的密码
CREATE USER 'yuanyuanlanlan'@'localhost'
PASSWORD HISTORY 6
PASSWORD REUSE INTERVAL 365 DAY;
ALTER USER 'yuanyuanlanlan'@'localhost'
PASSWORD HISTORY 6
PASSWORD REUSE INTERVAL 365 DAY;
今天先学习到这里,明天继续。