回顧今天的數據庫實驗⊂(ο・㉨・ο)⊃
先新建一個測試數據庫
再創建個表填些數據
一、查看用戶
查看用戶並沒有直接的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 權限
測試台,這下就不行了
最后就試一試刪除這個賬戶
成功。