MySQL建立使用者和分配許可權
阿新 • • 發佈:2020-12-14
回顧今天的資料庫實驗⊂(ο・㉨・ο)⊃
先新建一個測試資料庫
再建立個表填些資料
一、檢視使用者
檢視使用者並沒有直接的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 許可權
測試臺,這下就不行了
最後就試一試刪除這個賬戶
成功。