- 一、概述
-
二 、授權(quán)
- 2.1 語法格式
- 2.2 語法說明
- 2.3 權(quán)限類型
- 2.4 權(quán)限級別
-
三、 回收權(quán)限
- 3.1 語法格式
- 3.2 語法說明
- 3.3 注意事項(xiàng)
- 四 、實(shí)踐操作
一、概述
數(shù)據(jù)控制語言,用來定義訪問權(quán)限和安全級別。主要包含包括grant,revoke 關(guān)鍵字
- grant 授予權(quán)限
- revoke 回收權(quán)限
二 、授權(quán)
2.1 語法格式
GRANT priv_type [(column_list)] [, priv_type [(column_list)]] ...
ON [object_type] priv_level
TO user [IDENTIFIED BY [PASSWORD] 'password']
[, user[IDENTIFIED BY [PASSWORD] 'password']] ...
[WITH with_option [with_option]...]
2.2 語法說明
參數(shù) | 參數(shù)說明 |
---|---|
priv_type |
參數(shù)表示權(quán)限類型 |
columns_list |
參數(shù)表示權(quán)限作用于哪些列上,省略該參數(shù)時,表示作用于整個表 |
object_type |
參數(shù)用于指定權(quán)限對象 |
priv_level |
參數(shù)用于指定權(quán)限級別 |
user |
參數(shù)表示用戶賬戶;由用戶名和主機(jī)名構(gòu)成,格式是“'username'@'hostname'” |
IDENTIFIED BY |
參數(shù)用來為用戶設(shè)置密碼 |
password |
參數(shù)是用戶的新密碼 |
WITH |
一個或多個with_option 參數(shù) |
with_option 參數(shù)一共5個選項(xiàng)
with_option參數(shù) | 參數(shù)說明 |
---|---|
GRANT OPTION |
被授權(quán)的用戶可以將這些權(quán)限賦予給別的用戶 |
MAX_QUERIES_PER_HOUR count |
設(shè)置每個小時可以允許執(zhí)行 count 次查詢 |
MAX_UPDATES_PER_HOUR count |
設(shè)置每個小時可以允許執(zhí)行 count 次更新 |
MAX_CONNECTIONS_PER_HOUR count |
設(shè)置每小時可以建立 count 個連接 |
MAX_USER_CONNECTIONS count |
設(shè)置單個用戶可以同時具有的 count 個連接 |
2.3 權(quán)限類型
權(quán)限類型分類
權(quán)限類型 | 說明 |
---|---|
數(shù)據(jù)庫權(quán)限 |
和一個具體的數(shù)據(jù)庫中的所有表相關(guān)。例如,可以在已有的數(shù)據(jù)庫 mytest 中創(chuàng)建新表的權(quán)限 |
表權(quán)限 |
和一個具體表中的所有數(shù)據(jù)相關(guān)。例如,可以使用 SELECT 語句查詢表 students 的所有數(shù)據(jù)的權(quán)限 |
列權(quán)限 |
和表中的一個具體列相關(guān)。例如,可以使用 UPDATE 語句更新表 students 中 name 列的值的權(quán)限 |
用戶權(quán)限 |
和 MySQL 中所有的數(shù)據(jù)庫相關(guān)。例如,可以刪除已有的數(shù)據(jù)庫或者創(chuàng)建一個新的數(shù)據(jù)庫的權(quán)限 |
① 授予數(shù)據(jù)庫權(quán)限時,<權(quán)限類型>可以指定為以下值
權(quán)限名稱 | 對應(yīng)user表中的字段 | 說明 |
---|---|---|
SELECT |
Select_priv | 表示授予用戶可以使用 SELECT 語句訪問特定數(shù)據(jù)庫中所有表和視圖的權(quán)限。 |
INSERT |
Insert_priv | 表示授予用戶可以使用 INSERT 語句向特定數(shù)據(jù)庫中所有表添加數(shù)據(jù)行的權(quán)限。 |
DELETE |
Delete_priv | 表示授予用戶可以使用 DELETE 語句刪除特定數(shù)據(jù)庫中所有表的數(shù)據(jù)行的權(quán)限。 |
UPDATE |
Update_priv | 表示授予用戶可以使用 UPDATE 語句更新特定數(shù)據(jù)庫中所有數(shù)據(jù)表的值的權(quán)限。 |
REFERENCES |
References_priv | 表示授予用戶可以創(chuàng)建指向特定的數(shù)據(jù)庫中的表外鍵的權(quán)限。 |
CREATE |
Create_priv | 表示授權(quán)用戶可以使用 CREATE TABLE 語句在特定數(shù)據(jù)庫中創(chuàng)建新表的權(quán)限。 |
ALTER |
Alter_priv | 表示授予用戶可以使用 ALTER TABLE 語句修改特定數(shù)據(jù)庫中所有數(shù)據(jù)表的權(quán)限。 |
SHOW VIEW |
Show_view_priv | 表示授予用戶可以查看特定數(shù)據(jù)庫中已有視圖的視圖定義的權(quán)限。 |
CREATE ROUTINE |
Create_routine_priv | 表示授予用戶可以為特定的數(shù)據(jù)庫創(chuàng)建存儲過程和存儲函數(shù)的權(quán)限。 |
ALTER ROUTINE |
Alter_routine_priv | 表示授予用戶可以更新和刪除數(shù)據(jù)庫中已有的存儲過程和存儲函數(shù)的權(quán)限。 |
INDEX |
Index_priv | 表示授予用戶可以在特定數(shù)據(jù)庫中的所有數(shù)據(jù)表上定義和刪除索引的權(quán)限。 |
DROP |
Drop_priv | 表示授予用戶可以刪除特定數(shù)據(jù)庫中所有表和視圖的權(quán)限。 |
CREATE TEMPORARY TABLES |
Create_tmp_table_priv | 表示授予用戶可以在特定數(shù)據(jù)庫中創(chuàng)建臨時表的權(quán)限。 |
CREATE VIEW |
Create_view_priv | 表示授予用戶可以在特定數(shù)據(jù)庫中創(chuàng)建新的視圖的權(quán)限。 |
EXECUTE ROUTINE |
Execute_priv | 表示授予用戶可以調(diào)用特定數(shù)據(jù)庫的存儲過程和存儲函數(shù)的權(quán)限。 |
LOCK TABLES |
Lock_tables_priv | 表示授予用戶可以鎖定特定數(shù)據(jù)庫的已有數(shù)據(jù)表的權(quán)限。 |
ALL 或 ALL PRIVILEGES 或 SUPER |
Super_priv | 表示以上所有權(quán)限/超級權(quán)限 |
② 授予表權(quán)限時,<權(quán)限類型>可以指定為以下值:
權(quán)限名稱 | 對應(yīng)user表中的字段 | 說明 |
---|---|---|
SELECT |
Select_priv | 授予用戶可以使用 SELECT 語句進(jìn)行訪問特定表的權(quán)限 |
INSERT |
Insert_priv | 授予用戶可以使用 INSERT 語句向一個特定表中添加數(shù)據(jù)行的權(quán)限 |
DELETE |
Delete_priv | 授予用戶可以使用 DELETE 語句從一個特定表中刪除數(shù)據(jù)行的權(quán)限 |
DROP |
Drop_priv | 授予用戶可以刪除數(shù)據(jù)表的權(quán)限 |
UPDATE |
Update_priv | 授予用戶可以使用 UPDATE 語句更新特定數(shù)據(jù)表的權(quán)限 |
ALTER |
Alter_priv | 授予用戶可以使用 ALTER TABLE 語句修改數(shù)據(jù)表的權(quán)限 |
REFERENCES |
References_priv | 授予用戶可以創(chuàng)建一個外鍵來參照特定數(shù)據(jù)表的權(quán)限 |
CREATE |
Create_priv | 授予用戶可以使用特定的名字創(chuàng)建一個數(shù)據(jù)表的權(quán)限 |
INDEX |
Index_priv | 授予用戶可以在表上定義索引的權(quán)限 |
ALL 或 ALL PRIVILEGES 或 SUPER |
Super_priv | 所有的權(quán)限名 |
③ 授予列權(quán)限時,<權(quán)限類型>可以指定以下值
權(quán)限名稱 | 對應(yīng)user表中的字段 | 說明 |
---|---|---|
SELECT |
Select_priv | 授予用戶可以使用 SELECT 語句進(jìn)行訪問特定表的權(quán)限 |
INSERT |
Insert_priv | 授予用戶可以使用 INSERT 語句向一個特定表中添加數(shù)據(jù)行的權(quán)限 |
UPDATE |
Update_priv | 授予用戶可以使用 UPDATE 語句更新特定數(shù)據(jù)表的權(quán)限 |
④授予用戶權(quán)限時,<權(quán)限類型> 除了可以指定為授予數(shù)據(jù)庫權(quán)限,還可以指定以下值
權(quán)限名稱 | 說明 |
---|---|
CREATE USER |
表示授予用戶可以創(chuàng)建和刪除新用戶的權(quán)限 |
SHOW DATABASES |
表示授予用戶可以使用 SHOW DATABASES 語句查看所有已有的數(shù)據(jù)庫的定義的權(quán)限 |
2.4 權(quán)限級別
權(quán)限級別 | 說明 |
---|---|
* |
表示當(dāng)前數(shù)據(jù)庫中的所有表 |
*.* |
表示所有數(shù)據(jù)庫中的所有表 |
db_name.* |
表示某個數(shù)據(jù)庫中的所有表,db_name 指定數(shù)據(jù)庫名 |
db_name.tbl_name |
表示某個數(shù)據(jù)庫中的某個表或視圖,db_name 指定數(shù)據(jù)庫名,tbl_name 指定表名或視圖名 |
db_name.routine_name |
表示某個數(shù)據(jù)庫中的某個存儲過程或函數(shù),routine_name 指定存儲過程名或函數(shù)名 |
TO 子句 |
如果權(quán)限被授予給一個不存在的用戶,MySQL 會自動執(zhí)行一條 CREATE USER 語句來創(chuàng)建這個用戶,但同時必須為該用戶設(shè)置密碼 |
三、 回收權(quán)限
3.1 語法格式
REVOKE priv_type [(column_list)]
[, priv_type [(column_list)]] ...
ON [object_type] priv_level
FROM user [, user]...
3.2 語法說明
參數(shù) | 參數(shù)說明 |
---|---|
priv_type |
參數(shù)表示權(quán)限的類型 |
column_list |
參數(shù)表示權(quán)限作用于哪些列上,沒有該參數(shù)時作用于整個表上 |
user |
參數(shù)由用戶名和主機(jī)名構(gòu)成,格式為“username'@'hostname'” |
3.3 注意事項(xiàng)
- REVOKE 語法和 GRANT 語句的語法格式相似,但具有相反的效果。
- 要使用 REVOKE 語句,必須擁有 MySQL 數(shù)據(jù)庫的全局 CREATE USER 權(quán)限或 UPDATE 權(quán)限
四 、實(shí)踐操作
① 運(yùn)維童鞋想要查詢所有用戶的權(quán)限
select * FROM mysql.user;
②運(yùn)維童鞋想要創(chuàng)建一個新的用戶testXiezhr,密碼為testXiezhr。并授予test用戶所有的數(shù)據(jù)查詢、插入權(quán)限文章來源:http://www.zghlxwxcb.cn/news/detail-432822.html
# 創(chuàng)建用戶并授權(quán)
mysql> GRANT SELECT,INSERT ON *.*
-> TO 'testXiezhr'@'localhost'
-> IDENTIFIED BY 'testXiezhr'
-> WITH GRANT OPTION;
Query OK, 0 rows affected, 1 warning (0.01 sec)
# 使用 SHOW GRANTS 語句查詢用戶 testXiezhr的權(quán)限
mysql> show grants for 'testXiezhr'@localhost;
+---------------------------------------------------------------------------+
| Grants for testXiezhr@localhost |
+---------------------------------------------------------------------------+
| GRANT SELECT, INSERT ON *.* TO 'testXiezhr'@'localhost' WITH GRANT OPTION |
+---------------------------------------------------------------------------+
1 row in set (0.00 sec)
③ 運(yùn)維童鞋想要收回testXiezhr用戶的插入權(quán)限文章來源地址http://www.zghlxwxcb.cn/news/detail-432822.html
# 使用revoke關(guān)鍵字收回insert 權(quán)限
mysql> REVOKE INSERT ON *.* FROM 'testXiezhr'@'localhost';
Query OK, 0 rows affected (0.00 sec)
#使用 SHOW GRANTS 語句查詢用戶 testXiezhr的權(quán)限,我們發(fā)現(xiàn)insert 權(quán)限沒有了
mysql> show grants for 'testXiezhr'@localhost;
+-------------------------------------------------------------------+
| Grants for testXiezhr@localhost |
+-------------------------------------------------------------------+
| GRANT SELECT ON *.* TO 'testXiezhr'@'localhost' WITH GRANT OPTION |
+-------------------------------------------------------------------+
1 row in set (0.00 sec)
到了這里,關(guān)于【必知必會的MySQL知識】④DCL語言的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!