MySQL 8 0使用者和角色管理

2021-09-05 08:14:11 字數 3873 閱讀 8426

mysql8.0新加了很多功能,其中在使用者管理中增加了角色的管理,預設的密碼加密方式也做了調整,由之前的sha1改為了sha2,同時加上5.7的禁用使用者和使用者過期的設定,這樣方面使用者的管理和許可權的管理,也增加了使用者的安全性。mysql8.0中,mysql庫中表的檔案合併到資料根目錄中的mysql.ibd中(mysql8.0 innodb引擎重構)。同時mysql8.0可以使用set persist動態修改引數並儲存在配置檔案中(mysqld-auto.cnf,儲存的格式為json串),這個是dba同學的福音,不必擔心設定之後忘記儲存在配置檔案中重啟之後又被還原的問題了。查閱了mysql8.0的官方文件,通過官方的示例來檢視新的管理方式。

1.1、驗證外掛程式和密碼加密方式的變化

在mysql 8.0中,caching_sha2_password是預設的身份驗證外掛程式而不是之前版本的mysql_native_password,預設的密碼加密方式是sha2。如果需要保持之前的驗證方式並保持之前版本的密碼加密方式需要在配置檔案中修改,暫不支援動態修改,需要重啟生效:default_authentication_plugin = mysql_native_password。

將8.0已有的sha2密碼修改為sha1的模式:

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 . towangwei@127.0.0.1identified by 'passowrd' with grant option;

mysql8.0版本:

create userwangwei@127.0.0.1identified by 'passowrd';

grant all on . towangwei@127.0.0.1with grant option;

mysql8.0中帶過期時間使用者的建立:

create userwangwei@127.0.0.1identified by 'wangwei' password expire interval 90 day;

grant all on . towangwei@127.0.0.1with grant option;

mysql8.0修改使用者密碼:

alter user 'wangwei'@'127.0.0.1' identified by 'wangwei';

1.3、密碼過期時間管理

要全域性建立自動密碼到期策略,請使用default_password_lifetime系統變數。其預設值為0,禁用自動密碼過期。如果值default_password_lifetime正整數n,則表示允許的密碼生存期,以便密碼必須每天更改n。可以加在配置檔案中:

1:要建立全域性策略,密碼的使用期限大約為六個月,請在伺服器my.cnf檔案中使用以下行啟動伺服器:

[mysqld]

default_password_lifetime=180

2:要建立全域性策略,以便密碼永不過期,請將其設定default_password_lifetime為0:

[mysqld]

default_password_lifetime=0

這個引數是可以動態設定並儲存的:

set persist default_password_lifetime = 180;

set persist default_password_lifetime = 0;

建立和修改帶有密碼過期的使用者,帳戶特定的到期時間設定示例:

要求每90天更換密碼:

create user 'wangwei'@'localhost' password expire interval 90 day;

alter user 'wangwei'@'localhost' password expire interval 90 day;

禁用密碼過期:

create user ' wangwei'@'localhost' password expire never;

alter user 'wangwei'@'localhost' password expire never;

遵循全域性到期政策:

create user 'wangwei'@'localhost' password expire default;

alter user 'wangwei'@'localhost' password expire default;

mysql允許限制重複使用以前的密碼。可以根據密碼更改次數、已用時間或兩者來建立重用限制。帳戶的密碼歷史由過去分配的密碼組成。mysql可以限制從此歷史記錄中選擇新密碼:

1:如果根據密碼更改次數限制帳戶,則無法從指定數量的最新密碼中選擇新密碼。例如,如果密碼更改的最小數量設定為3,則新密碼不能與任何最近的3個密碼相同。

2:如果帳戶因時間的限制而被限制,則無法從歷史記錄中的新密碼中選擇新密碼,該新密碼不會超過指定的天數。例如,如果密碼重用間隔設定為60,則新密碼不得在最近60天內選擇的密碼之間。

注意:空密碼不記錄在密碼歷史記錄中,並隨時可以重複使用。

要全域性建立密碼重用策略,請使用password_history和password_reuse_interval系統變數。要在伺服器啟動時指定變數值,請在伺服器my.cnf檔案中定義它們。

示例:要禁止重複使用最近6個密碼或密碼超過365天的任何密碼,請將這些行放入您的伺服器 my.cnf檔案中:

[mysqld]

password_history=6

password_reuse_interval=365

要動態設定和儲存配置,請使用如下所示的語句:

set persist password_history = 6;

set persist password_reuse_interval = 365;

mysql角色是指定的許可權集合。像使用者帳戶一樣,角色可以擁有授予和撤消的許可權。可以授予使用者帳戶角色,授予該帳戶與每個角色相關的許可權。使用者被授予角色許可權,則該使用者擁有該角色的許可權。

以下列表總結了mysql提供的角色管理功能:

 create role並 drop role角色建立和刪除。

 grant並 revoke為使用者和角色分配和撤銷許可權。

 show grants 顯示使用者和角色的許可權和角色分配。

 set default role 指定哪些帳戶角色預設處於活動狀態。

 set role 更改當前會話中的活動角色。

 current_role()功能顯示當前會話中的活動角色。

2.1、建立角色並授予使用者角色許可權

MySQL8 0 角色管理

建立角色 create role test role 授權角色 grant select,insert,update,delete on testdb.to test user 將角色分配給使用者 create user test 192.168.1.1 identified by create u...

mysql8 0使用者操作

命令 create user username host identified by password 說明 username 你將建立的使用者名稱 host 指定該使用者在哪個主機上可以登陸,如果是本地使用者可用localhost,如果想讓該使用者可以從任意遠端主機登陸,可以使用萬用字元 pass...

oracle使用者許可權和角色

使用者許可權是最基本的資料庫安全控制。其作用就是控制使用者對資料的訪問,sql語句的執行。當oracle使用者建立的時候,可以通過授權來控制使用者對資料的連線,資料庫物件的操作等等。在oracle中,分為兩種許可權。1.系統許可權 system privileges 系統許可權用來執行某些特定的操作...