1. 程式人生 > 其它 >MySQL:DCL(資料控制語言)

MySQL:DCL(資料控制語言)

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