MySQL:DCL(資料控制語言)
阿新 • • 發佈:2021-07-17
<1> 簡介
MySql預設使用的都是 root 使用者,超級管理員,擁有全部的許可權。除了root使用者以外,我們還可以通 過DCL語言來定義一些許可權較小的使用者, 分配不同的許可權來管理和維護資料庫。
<2> 建立使用者
語法格式
CREATE USER '使用者名稱'@'主機名' IDENTIFIED BY '密碼';
引數 | 說明 |
使用者名稱 | 建立的新使用者,登入名稱 |
主機名 | 指定該使用者在哪個主機上可以登陸,本地使用者可用 localhost 如果想讓該使用者可以 從任意遠端主機登陸,可以使用萬用字元 % |
密碼 | 登入密碼 |
1) 建立 admin1 使用者,只能在 localhost 這個伺服器登入 mysql 伺服器,密碼為 123456
CREATE USER 'admin1'@'localhost' IDENTIFIED BY '123456';
建立的使用者在名字為 mysql的 資料庫中的 user表中
2)建立 admin2 使用者可以在任何電腦上登入 mysql 伺服器,密碼為 123456
CREATE USER 'admin2'@'%' IDENTIFIED BY '123456';
% 表示 使用者可以在任意電腦登入 mysql伺服器.
<3>使用者授權
建立好的使用者,需要進行授權
語法格式
GRANT 許可權 1, 許可權 2... ON 資料庫名.表名 TO'使用者名稱'@'主機名';
引數 | 說明 |
許可權 | 授予使用者的許可權,如 CREATE、ALTER、SELECT、INSERT、UPDATE 等。 如果要授 予所有的許可權則使用 ALL |
ON | 用來指定許可權針對哪些庫和表 |
TO | 表示將許可權賦予某個使用者 |
1) 給 admin1 使用者分配對 db4 資料庫中 products 表的 操作許可權:查詢
GRANT SELECT ON db4.products TO 'admin1'@'localhost';
2) 給 admin2 使用者分配所有許可權,對所有資料庫的所有表
GRANT ALL ON*.* TO 'admin2'@'%';
3) 使用admin1使用者登入資料庫 測試許可權
4) 發現數據庫列表中 只有db4, 表只有 product
5) 執行查詢操作
-- 查詢account表 SELECT * FROM products;
6) 執行插入操作,發現不允許執行,沒有許可權
-- 向 products 表中插入資料 -- 不允許執行 INSERT INTO products VALUES('p010','小鳥伏特加',1000,1,NULL)
<4>檢視許可權
語法格式
SHOW GRANTS FOR '使用者名稱'@'主機名';
檢視root使用者許可權
-- 檢視root使用者的許可權 SHOW GRANTS FOR 'root'@'localhost';
GRANT ALL PRIVILEGES 是表示所有許可權
<5>刪除使用者
語法格式
DROP USER '使用者名稱'@'主機名';
刪除 admin1 使用者
-- 刪除 admin1 使用者 DROP USER 'admin1'@'localhost';
<6>查詢使用者
選擇名為 mysql的資料庫, 直接查詢 user表即可
-- 查詢使用者 SELECT * FROM USER;