MySQL建立用戶和分配權限

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

先新建一個測試數據庫sql

image-20201214172412783

再建立個表填些數據數據庫

image-20201214172458012

1、查看用戶

查看用戶並無直接的SQL語句,而是進入 mysql 數據庫的 user 表(這個mysql庫和user表都是一開始就有的),直接用 select * from user;來查看有什麼用戶緩存

use mysql;
select * from user;

2、建立用戶

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';

2、分配權限

grant privileges on databasename.tablename to 'username'@'host';
  • privileges:表示要授予什麼權力,例如能夠有 select , insert ,delete,update等,若是要授予所有權力,則填 ALL
  • databasename.tablename:表示用戶的權限能用在哪一個庫的哪一個表中,若是想要用戶的權限很做用於全部的數據庫全部的表,則填 " *.* ",* 是一個通配符,表示所有。
  • ’username‘@‘host’:表示受權給哪一個用戶,username 的引號能夠不加哦,但 host 必須加。

爲帳戶分配不一樣的權限ide

-- 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 如:code

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

補充 爲用戶建立數據庫:

create database basename DEFAULT CHARSET utf8 COLLATE utf8_general_ci;

3、刪除用戶

drop user 'username'@'host';

4、設置與更改用戶密碼

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

-- 若是是設置當前用戶的密碼
set password = password('newpassword');

5、撤銷帳戶權限

-- 回收權限,格式和分配差很少,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 權利的

6、測試

先建立一個新帳戶

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

成功。

相關文章
相關標籤/搜索