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用戶讀取和寫入的角色。