1. 程式人生 > 實用技巧 >MySQL建立使用者和分配許可權

MySQL建立使用者和分配許可權

回顧今天的資料庫實驗⊂(ο・㉨・ο)⊃

先新建一個測試資料庫

再建立個表填些資料

一、檢視使用者

檢視使用者並沒有直接的SQL語句,而是進入 mysql 資料庫的 user 表(這個mysql庫和user表都是一開始就有的),直接用 select * from user;來檢視有什麼使用者

use mysql;
select * from user;

二、建立使用者

create user 'user_name'@'host' identified by 'password';
  • user_name:要建立使用者的名字。
  • host:表示要這個新建立的使用者允許從哪臺機登陸,如果只允許從本機登陸,則 填 ‘localhost’ ,如果允許從遠端登陸,則填 ‘%’
  • password:新建立使用者的登陸資料庫密碼,如果沒密碼可以不寫。

建立不同限制的賬戶

-- 建立賬戶,"%"是無登入限制的,“123”是密碼
create user 'liwker'@'%' identified by '123';

-- "localhost"是限制為本地登入
create user 'liwker'@'localhost' identified by '123';

-- 這個是限制 ip 為 10.11.20.30 的主機訪問
create user 'liwker'@'10.11.20.30' identified by '123';

二、分配許可權

grant privileges on databasename.tablename to 'username'@'host';
  • privileges:表示要授予什麼權力,例如可以有 select , insert ,delete,update等,如果要授予全部權力,則填 ALL
  • databasename.tablename:表示使用者的許可權能用在哪個庫的哪個表中,如果想要使用者的許可權很作用於所有的資料庫所有的表,則填 " *.* ",* 是一個萬用字元,表示全部。
  • ’username‘@‘host’:表示授權給哪個使用者,username 的引號可以不加哦,但 host 必須加。

為賬戶分配不同的許可權

-- Liwker庫的student表的 只讀許可權 分配給 liwker 賬戶
grant select on Liwker.student to liwker@'%';

-- Liwker庫(所有表)的 多個許可權 分配給 liwker 賬戶
grant select,insert,delete,update on Liwker.* to liwker@'%';

-- Liwker庫的 所有許可權 分配給 liwker 賬戶
grant all on Liwker.* to liwker@'%';

-- 所有庫的 所有許可權 分配給 liwker 賬戶
grant all on *.* to liwker@'%';

-- 重新整理許可權
flush privileges;

許可權列表:

  • ALTER: 修改表和索引。
  • CREATE: 建立資料庫和表。
  • DELETE: 刪除表中已有的記錄。
  • DROP: 拋棄(刪除)資料庫和表。
  • INDEX: 建立或拋棄索引。
  • INSERT: 向表中插入新行。
  • REFERENCE: 未用。
  • SELECT: 檢索表中的記錄。
  • UPDATE: 修改現存表記錄。
  • FILE: 讀或寫伺服器上的檔案。
  • PROCESS: 檢視伺服器中執行的執行緒資訊或殺死執行緒。
  • RELOAD: 過載授權表或清空日誌、主機快取或表快取。
  • SHUTDOWN: 關閉伺服器。
  • ALL: 所有許可權,ALL PRIVILEGES同義詞。
  • USAGE: 特殊的 "無許可權" 許可權.

可根據上面的許可權欄位 為使用者分配相應的許可權

注意:

用以上命令授權的使用者不能給其他使用者授權,如果想這個使用者能夠給其他使用者授權,就要在後面加上 WITH GRANT OPTION 如:

grant all on *.* to 'liwker'@'%' with grant option;

補充 為使用者建立資料庫:

create database basename DEFAULT CHARSET utf8 COLLATE utf8_general_ci;

三、刪除使用者

drop user 'username'@'host';

四、設定與更改使用者密碼

set password for 'username'@'host' = password('newpassword');

-- 如果是設定當前使用者的密碼
set password = password('newpassword');

五、撤銷賬戶許可權

-- 回收許可權,格式和分配差不多,grant -> revoke , to -> from
revoke select on Liwker.student from liwker@'%';

但注意:

若授予權利是這樣寫:grant select on *.* to liwker@'%';
則用 revoke select on Liwker.student to liwker@'%'; 是不能撤銷使用者 liwker 對 Liwker.student 中的 SELECT 權利的。

反過來 grant select on Liwker.student to liwker@'%'; 授予權力
revoke select on *.* to liwker@'%'; 也是不能用來撤銷使用者 liwker 對 Liwker 庫的 student 表的SELECT 權利的

六、測試

先建立一個新賬戶

再給他分配一些操作許可權

接下來,就開啟cmd用新賬戶測試一下
先登入這個賬戶

可以看到除了預設資料庫,只能看到分配給的資料庫和表

用分配給的不同SQL語句測試一下

再試一試沒許可權的

這時,我們可以在管理臺給他新增這個許可權

在測試臺重新試一試剛剛的 delete

再試一試回收許可權,管理臺回收 delete 許可權

測試臺,這下就不行了

最後就試一試刪除這個賬戶

成功。