ALTER USER 'root'@'127.0.0.1' IDENTIFIED BY 'passowrd' PASSWORD EXPIRE NEVER;
#修改加密规则为永不过期
ALTER USER 'root'@'127.0.0.1' IDENTIFIED WITH mysql_native_password BY 'password';
#更新一下用户的密码加密方式为之前版本的方式
FLUSH PRIVILEGES; #刷新权限
1.2 用户授权和修改密码
MySQL8.0的用户授权和之前有所区别,老版本的常用授权语句在8.0中会报错:
MySQL8.0之前版本:
GRANT ALL ON *.* TO `wangwei`@`127.0.0.1` IDENTIFIED BY 'passowrd' WITH GRANT OPTION;
MySQL8.0版本:
# 创建账号密码 CREATE USER `wangwei`@`127.0.0.1` IDENTIFIED BY 'passowrd'; # 授予权限 GRANT ALL ON *.* TO `wangwei`@`127.0.0.1` WITH GRANT OPTION; # 删除权限 REVOKE all privileges ON databasename.tablename FROM 'username'@'host'; # 修改密码 ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '你的密码'; MySQL8.0中带过期时间用户的创建:
CREATE USER `wangwei`@`127.0.0.1` IDENTIFIED BY 'wangwei' PASSWORD EXPIRE INTERVAL 90 DAY;
GRANT ALL ON *.* TO `wangwei`@`127.0.0.1` WITH GRANT OPTION; MySQL8.0修改用户密码:
CREATE ROLE并 DROP ROLE角色创建和删除; GRANT并 REVOKE为用户和角色分配和撤销权限; SHOW GRANTS 显示用户和角色的权限和角色分配; SET DEFAULT ROLE 指定哪些帐户角色默认处于活动状态; SET ROLE 更改当前会话中的活动角色。 CURRENT_ROLE()功能显示当前会话中的活动角色。 2.1 创建角色并授予用户角色权限
GRANT ALL ON app_db.* TO 'app_developer';GRANT SELECT ON app_db.* TO 'app_read';GRANT INSERT, UPDATE, DELETE ON app_db.* TO 'app_write';CREATE ROLE 'app_developer', 'app_read', 'app_write';
现在假设您最初需要一个开发人员帐户,两个需要只读访问权的用户以及一个需要读取/写入权限的用户。
使用CREATEUSER创建用户:
CREATE USER 'dev1'@'localhost' IDENTIFIED BY 'dev1pass'; CREATE USER 'read_user1'@'localhost' IDENTIFIED BY 'read_user1pass'; CREATE USER 'read_user2'@'localhost' IDENTIFIED BY 'read_user2pass'; CREATE USER 'rw_user1'@'localhost' IDENTIFIED BY 'rw_user1pass'; 要为每个用户分配其所需的权限,可以使用GRANT与刚才显示的形式相同的语句,但这需要列举每个用户的个人权限。
相反,使用GRANT允许授权角色而非权限的替代语法:
GRANT 'app_developer' TO 'dev1'@'localhost';GRANT 'app_read' TO 'read_user1'@'localhost', 'read_user2'@'localhost'; GRANT 'app_read', 'app_write' TO 'rw_user1'@'localhost'; 结合角色所需的读取和写入权限,在GRANT中授权 rw_user1用户读取和写入的角色。