MySQL創建用戶和分配權限


回顧今天的數據庫實驗⊂(ο・㉨・ο)⊃

先新建一個測試數據庫

image-20201214172412783

再創建個表填些數據

image-20201214172458012

一、查看用戶

查看用戶並沒有直接的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 權利的

六、測試

先創建一個新賬戶

image-20201214173710214

再給他分配一些操作權限

image-20201214173932905

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

image-20201214174051967

可以看到除了默認數據庫,只能看到分配給的數據庫和表

image-20201214174223713

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

image-20201214174549406

再試一試沒權限的

image-20201214174720481

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

image-20201214174834028

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

image-20201214174959311

再試一試回收權限,管理台回收 delete 權限

image-20201214175431291

測試台,這下就不行了

image-20201214175454114

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

image-20201214183646494

image-20201214183713167

成功。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM