MySQL系列-許可權管理

系列文章說明

MySQL系列文章包含了軟體安裝、具體使用、備份恢復等內容,主要用於記錄個人的學習筆記,主要使用的MySQL版本為5。7。28,伺服器系統版本為CentOS 7。5。本章節為資料庫許可權管理。

許可權

什麼是許可權?

① MySQL的許可權是針對使用者設計,管理員可以根據不同的使用者賦予不同的許可權,許可權的作用物件為資料庫和表。即對使用者操作物件的行為進行限制。

② Linux則跟MySQL不同,Linux的許可權更多的是檔案屬性,如我們可以透過chmod或者chown等命令對檔案許可權的屬性進行修改。

MySQL系列-許可權管理

許可權的表現形式是什麼?

① MySQL的許可權表示形式為:使用者的增刪改查許可權

② Linux的許可權通常表示為:檔案的rwx屬性

MySQL系列-許可權管理

如何檢視許可權?

MySQL資料庫可以使用show命令檢視使用者的許可權資訊。

檢視使用者授權常用格式

show grants for 使用者;

檢視yunwei使用者的許可權資訊

show grants for yunwei@‘%’;

MySQL系列-許可權管理

如何新增許可權

MySQL資料庫新增許可權使用的命令為grant,新增授權在使用者重新連線後才生效。

版本說明

① 8。0版本之前,grant命令可以用於建立使用者和許可權賦值

② 8。0(含)版本之後,grant命令只能用於許可權賦值

③ 為了命令能夠通用,本文使用通用的方式進行配置

新增授權常用格式:

grant 許可權1,許可權2,許可權。。。 on 物件(資料庫/表) to 使用者;

新增許可權

管理員許可權

一般來說,管理員擁有所有許可權,在新增管理員使用者時,許可權欄位可以透過ALL引數設定,將所有操作物件許可權賦予管理員使用者。

建立一個管理員user1,並賦予管理員許可權。

create user user01@‘%’ identified by ‘123’; # 建立使用者grant all on *。* to user01@‘%’; # all為所有許可權 *。* 表示所有的資料庫和表

如果該管理員需要擁有對其他使用者管理許可權時,應在賦值後面新增with grant option欄位

grant all on *。* to user01@‘%’ with grant option;

測試無管理使用者許可權時,對使用者許可權管理情況。

select user,host from mysql。user; # 檢視使用者grant select on mysql。* to yunwei@‘%’; # 賦予mysql資料庫所有表的select許可權給yunwei

MySQL系列-許可權管理

測試有管理使用者許可權時,對使用者許可權管理情況

MySQL系列-許可權管理

如果使用者許可權沒有變化,請使用以下命令重新整理許可權資訊

flush privileges;

新增許可權

普通使用者許可權

一般來說,對普通使用者的許可權管理會精細到某個資料庫或者表。例如app使用者只能管理app資料庫,yunwei使用者只能管理app資料庫的user表等。

對user02使用者賦予app資料庫的查詢和建立表許可權

grant create,select on app。* to ‘user02’@‘%’; # 賦予許可權flush privileges; # 重新整理許可權資訊show grants for ‘user02’@‘%’; # 檢視使用者許可權

MySQL系列-許可權管理

測試user02在app資料中建立表user和查看錶

select user(); #檢視當前使用者create table app。user(id int,name varchar(20));

MySQL系列-許可權管理

測試user02對app資料庫中的其他操作和對其他資料庫的操作

MySQL系列-許可權管理

✎ 注意

MySQL資料庫多次授權時不會覆蓋原來的許可權!例如user01有select許可權,下次授權create許可權給user01,這時user01會擁有select和create兩種許可權。

MySQL系列-許可權管理

如何刪除授權

MySQL資料庫一般使用revoke命令對使用者的許可權進行移除,移除授權在使用者重新連線後才生效。

刪除授權的一般格式:

revoke 許可權 on 物件 from 使用者;

刪除user02使用者對app資料庫的select許可權

show grants for ‘user02’@‘%’; # 檢視使用者許可權revoke select on app。* from ‘user02’@‘%’; # 刪除授權show grants for ‘user02’@‘%’;  # 檢視使用者許可權

MySQL系列-許可權管理

刪除user02使用者對app庫的所有許可權

show grants for ‘user02’@‘%’; # 檢視使用者許可權revoke all on app。* from ‘user02’@‘%’; # 刪除授權show grants for ‘user02’@‘%’; # 檢視使用者許可權

MySQL系列-許可權管理

如何檢視許可權

檢視許可權

使用者許可權

使用者許可權可以使用show命令檢視,也可以檢視資料庫表記錄。

show grants for 使用者;

檢視資料表中的記錄

select * from mysql。user where user=‘user02’\G;

MySQL系列-許可權管理

檢視許可權

檢視資料庫許可權資訊

資料庫許可權資訊儲存在mysql。db表中

select * from mysql。db where Db=‘app’\G;

MySQL系列-許可權管理

檢視許可權

其他物件許可權

MySQL常用許可權

MySQL系列-許可權管理

個人思維導圖

MySQL系列-許可權管理

TAG: 許可權使用者資料庫user02APP