-- 设置密码 SET PASSWORD = PASSWORD('新密码') -- 为当前用户设置密码 SET PASSWORD FOR 用户名 = PASSWORD('新密码') -- 为指定用户设置密码
-- 8.X SET PASSWORD = '新密码' -- 为当前用户设置密码 SET PASSWORD FOR 用户名 = '新密码' -- 为指定用户设置密码
设置密码过期
1 2 3 4 5 6 7 8
# 将密码标记为过期,用户在第一次连接到服务器时必须选择一个新密码 CREATE USER 'holelin'@'localhost' PASSWORD EXPIRE; # 默认过期时间,应用 default_password_lifetime 系统变量指定的全局过期策略 CREATE USER 'holelin'@'localhost' PASSWORD EXPIRE DEFAULT; # 禁用密码过期,永不过期 CREATE USER 'holelin'@'localhost' PASSWORD EXPIRE NEVER; # 设定过期时间,每 180 天选择一个新密码 CREATE USER 'holelin'@'localhost' PASSWORD EXPIRE INTERVAL 180 DAY;
删除用户
1 2
-- 删除用户 DROP USER 用户名
锁定用户
1 2 3 4
# 锁定用户 ALTER USER 'developer'@'%' ACCOUNT LOCK; # 解锁 ALTER USER 'developer'@'%' ACCOUNT UNLOCK;
角色管理
创建角色
1
CREATE ROLE 'dba','app_dev';
给角色赋予权限
1
GRANT SELECT,INSERT,UPDATE,DELETE ON athena.* TO app_dev;
创建用户并授予用户角色
1 2
CREATE USER 'athena_dev1' @'%' IDENTIFIED BY '123456'; GRANT app_dev TO 'athena_dev1' @'%';
激活角色
1 2 3
SET DEFAULT ROLE {NONE | ALL | role [, role ] ...} TO user [, user ] ...
1 2 3
SET DEFAULT ROLE 'app_dev' to 'athena_dev1'@'%';
-- 若要删除默认角色设置:SET DEFAULT ROLE none TO user_name;
启用登录自动激活
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
-- 修改参数,启用登录自动激活。(该参数不允许会话级修改) mysql> show global variables like 'activate_all_roles_on_login'; +-----------------------------+-------+ | Variable_name | Value | +-----------------------------+-------+ | activate_all_roles_on_login | OFF | +-----------------------------+-------+ 1 row in set (0.04 sec)
mysql> set global activate_all_roles_on_login = on; Query OK, 0 rows affected (0.00 sec)
mysql> show global variables like 'activate_all_roles_on_login'; +-----------------------------+-------+ | Variable_name | Value | +-----------------------------+-------+ | activate_all_roles_on_login | ON | +-----------------------------+-------+ 1 row in set (0.01 sec)
查看当前账号角色
1 2 3 4 5 6 7
mysql> select CURRENT_ROLE(); +----------------+ | CURRENT_ROLE() | +----------------+ | `app_dev`@`%` | +----------------+ 1 row in set (0.00 sec)
撤销角色/删除角色
1 2 3 4 5 6 7
-- 撤销角色,从用户上拿掉某一角色,即同时的撤销该角色拥有的权限集合 REVOKE role_name FROM user_name; -- 回收角色上的授权(和旧时的用户回收权限类似) REVOKE DELETE ON db_name.* FROM role_name;
GRANT ALL ON db_name.*和REVOKE ALL ON db_name.*只授予和撤销数据库权限.
表层级:表权限适用于一个给定表中的所有列,mysql.talbes_priv
GRANT ALL ON db_name.tbl_name和REVOKE ALL ON db_name.tbl_name只授予和撤销表权限.
列层级:列权限适用于一个给定表中的单一列,mysql.columns_priv
当使用REVOKE时,您必须指定与被授权列相同的列.
分配权限
1 2 3 4 5 6
-- 分配权限/添加用户 GRANT 权限列表 ON 表名 TO 用户名 [IDENTIFIED BY [PASSWORD] 'password'] [WITH GRANT OPTION] - all privileges 表示所有权限 - *.* 表示所有库的所有表 - 库名.表名 表示某库下面的某表 GRANT ALL PRIVILEGES ON `pms`.* TO 'pms'@'%' IDENTIFIED BY 'pms0817';