系列文章說明
MySQL系列文章包含了軟體安裝、具體使用、備份恢復等內容,主要用於記錄個人的學習筆記,主要使用的MySQL版本為5。7。28,伺服器系統版本為CentOS 7。5。本章節為資料庫許可權管理。
許可權
什麼是許可權?
① MySQL的許可權是針對使用者設計,管理員可以根據不同的使用者賦予不同的許可權,許可權的作用物件為資料庫和表。即對使用者操作物件的行為進行限制。
② Linux則跟MySQL不同,Linux的許可權更多的是檔案屬性,如我們可以透過chmod或者chown等命令對檔案許可權的屬性進行修改。
許可權的表現形式是什麼?
① MySQL的許可權表示形式為:使用者的增刪改查許可權
② Linux的許可權通常表示為:檔案的rwx屬性
如何檢視許可權?
MySQL資料庫可以使用show命令檢視使用者的許可權資訊。
檢視使用者授權常用格式
show grants for 使用者;
檢視yunwei使用者的許可權資訊
show grants for yunwei@‘%’;
如何新增許可權
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
測試有管理使用者許可權時,對使用者許可權管理情況
如果使用者許可權沒有變化,請使用以下命令重新整理許可權資訊
flush privileges;
新增許可權
普通使用者許可權
一般來說,對普通使用者的許可權管理會精細到某個資料庫或者表。例如app使用者只能管理app資料庫,yunwei使用者只能管理app資料庫的user表等。
對user02使用者賦予app資料庫的查詢和建立表許可權
grant create,select on app。* to ‘user02’@‘%’; # 賦予許可權flush privileges; # 重新整理許可權資訊show grants for ‘user02’@‘%’; # 檢視使用者許可權
測試user02在app資料中建立表user和查看錶
select user(); #檢視當前使用者create table app。user(id int,name varchar(20));
測試user02對app資料庫中的其他操作和對其他資料庫的操作
✎ 注意
MySQL資料庫多次授權時不會覆蓋原來的許可權!例如user01有select許可權,下次授權create許可權給user01,這時user01會擁有select和create兩種許可權。
如何刪除授權
MySQL資料庫一般使用revoke命令對使用者的許可權進行移除,移除授權在使用者重新連線後才生效。
刪除授權的一般格式:
revoke 許可權 on 物件 from 使用者;
刪除user02使用者對app資料庫的select許可權
show grants for ‘user02’@‘%’; # 檢視使用者許可權revoke select on app。* from ‘user02’@‘%’; # 刪除授權show grants for ‘user02’@‘%’; # 檢視使用者許可權
刪除user02使用者對app庫的所有許可權
show grants for ‘user02’@‘%’; # 檢視使用者許可權revoke all on app。* from ‘user02’@‘%’; # 刪除授權show grants for ‘user02’@‘%’; # 檢視使用者許可權
如何檢視許可權
檢視許可權
使用者許可權
使用者許可權可以使用show命令檢視,也可以檢視資料庫表記錄。
show grants for 使用者;
檢視資料表中的記錄
select * from mysql。user where user=‘user02’\G;
檢視許可權
檢視資料庫許可權資訊
資料庫許可權資訊儲存在mysql。db表中
select * from mysql。db where Db=‘app’\G;
檢視許可權
其他物件許可權
MySQL常用許可權
個人思維導圖