首頁 > 軟體

MySQL許可權控制和使用者與角色管理範例分析講解

2022-12-03 14:01:42

一、MySQL使用者登入

一般在本機上我們的登入命令:
mysql -u root -p+密碼
這裡介紹命令的作用:
-u  指定使用者名稱
-h  指定主機地址(預設為localhost)
-p  指定使用者輸入的密碼
-P  指定伺服器的埠(預設為3306)

二、使用者管理

什麼是使用者管理呢?在建立了一個資料庫後,資料庫的管理員或者是建立者可以建立使用者並同時對該使用者做出限制(也就是使用者的許可權),當其他人想要存取該資料庫時,可以通過使用該使用者的資訊登入資料庫。

1:查詢使用者
use mysql;
select *from user;
//nysql資料庫的user表存放的是該資料庫中的使用者資訊
2:建立使用者
create user '使用者名稱'@'主機名' identified by '密碼';
//如果想選擇任意主機地址
create user '使用者名稱'@'%' identified by '密碼';
3:修改使用者密碼
alter user '使用者名稱'@'主機名' identified with mysql_native_password by '新密碼';
4:刪除使用者
drop user '使用者名稱'@'主機名';

你即使建立了一個使用者但查詢資料庫會發現跟之前root使用者查詢資料庫時不一樣,這時候就是關於許可權了。

create user 'peter'@'%' identified by '989898';
select *from user;

三、許可權控制

許可權控制,概念就不多說了,MySQL中定義了許多許可權,這裡我們只說經常使用的。

all ,all privileges    所有許可權
select                 查詢資料
insert                 插入資料
update                 修改資料
delete                 刪除資料
alter                  修改表
drop                   刪除資料表/庫/檢視
create                 建立資料庫/表
1、查詢許可權
  show grants for '使用者名稱'@'主機名';
2、授予許可權
  grant + 許可權列表(也就是許可權) + on + 資料庫名或者表名+ to + '使用者名稱'@'主機名';
3、復原許可權
  revoke +許可權列表 + on + 資料庫名/表名 + from + '使用者名稱'@'主機名';

注意多個許可權之間用逗號隔開,*號萬用字元表示所有。

use mysql;
select *from user;
create user '888'@'%' identified  by '1111';
grant all on exercise.* to '888'@'%';
show grants for '888'@'%';

四、角色管理

MySQL角色的引入有什麼作用呢?與使用者的管理的語法相同,但它的作用卻不一樣。在MySQL中角色的引入是為了方便管理擁有相同許可權的使用者,這樣子可以進行統一管理。

1、角色的建立
  create role + 使用者名稱
2、 角色的授權
  建立完角色後是空的,沒有任何內容這時候就需要授權了
   grant + 許可權 + on + 資料庫/表名 + to + 角色
3、角色許可權的收回
  revoke + 許可權 + on + 資料庫/表名 + from + 角色
4、 講一個角色賦予其它角色或者是使用者
   grant + 角色1 + to + 角色2 + with admin option 
   加了with admin option 表示獲得許可權的角色還可以吧這個許可權再賦予別人,沒有的話就不許了

這裡舉個例子感受下,不過在舉例子前有個點要注意一下,建立了角色之後預設都是未被啟用的,只有啟用之後,被授予角色許可權的使用者才可以得到相應的許可權。

select current_role();

顯示上面的圖片則顯示角色未被啟用。

啟用角色語句:

set default all to + 使用者名稱

後面使用檢視啟用語句就會變成:

哦對,該啟用角色的方法並不是永久啟用。永久啟用的方法我並不喜歡用,因為我怕以後會把這個知識給忘了(其實就是菜)

繼續說例子:

create role r1;
grant select,insert on  exercise.* to r1;
select *from user;
# 開始建立角色
create user 's1'@'%';
create user 's2'@'%';
# 檢視建立角色的許可權
show grants for 's1'@'%';
# 檢視r1的許可權
show grants for 'r1';
# 開始將角色的許可權複製給使用者
grant r1 to s1;
# 檢視賦予的使用者的許可權
show grants for 's1'@'%';

使用s1使用者登入資料庫

發現s1使用者並沒有update許可權,至於其他的就不一一試驗了。

revoke r1 from 's1';

收回r1角色的許可權後,連檢視資料庫的許可權都沒有了

對於角色的總結:角色總的來說就是許可權的集合,它是為了防止出現多個使用者需要相同的許可權二=而反覆操作的情況,記住角色不是使用者,你用角色當做使用者登入了資料庫這是不可能的,再一次強調角色只是一個或者是多個許可權的集合。

到此這篇關於MySQL許可權控制和使用者與角色管理範例分析講解的文章就介紹到這了,更多相關MySQL許可權控制內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com