MySQL設置訪問權限實例詳解

設置訪問權限

在創建用戶賬號后,必須接著分配訪問權限。新創建的用戶賬號沒有訪問權限。它們能登錄MySQL,但不能看到數據,不能執行任何數據庫操作。

為看到賦予用戶賬號的權限,使用 SHOW GRANTS FOR ,如下所示:

輸入:

SHOW?GRANTS?FOR?bforta;

輸入:

MySQL設置訪問權限實例詳解

分析:輸出結果顯示用戶 bforta 有一個權限 USAGE ON *.* 。 USAGE 表示根本沒有權限(我知道,這不很直觀),所以,此結果表示在任意數據庫和任意表上對任何東西沒有權限。

用戶定義為 user@host MySQL的權限用用戶名和主機名結合定義。如果不指定主機名,則使用默認的主機名 % (授予用戶訪問權限而不管主機名)。

為設置權限,使用 GRANT 語句。 GRANT 要求你至少給出以下信息:

1.要授予的權限;

2.被授予訪問權限的數據庫或表;

3.用戶名。

以下例子給出 GRANT 的用法:

輸入:

GRANT?SELECT?ON?crashcourse.*TO?bforta;

分析:此 GRANT 允許用戶在 crashcourse.* ( crashcourse 數據庫的所有表)上使用 SELECT 。通過只授予 SELECT 訪問權限,用戶 bforta對 crashcourse 數據庫中的所有數據具有只讀訪問權限。

SHOW GRANTS 反映這個更改:

輸入:

SHOW?GRANTS?FOR?bforta;

輸出:

MySQL設置訪問權限實例詳解

分析:每個 GRANT 添加(或更新)用戶的一個權限。MySQL讀取所有授權,并根據它們確定權限。

GRANT 的反操作為 REVOKE ,用它來撤銷特定的權限。下面舉一個例子:

輸入:

REVOKE?SELECT?ON?crashcourse.*?FROM?bforta;

分析:這條 REVOKE 語句取消剛賦予用戶 bforta 的 SELECT 訪問權限。被撤銷的訪問權限必須存在,否則會出錯。

GRANT 和 REVOKE 可在幾個層次上控制訪問權限:

1.整個服務器,使用 GRANT ALL 和 REVOKE ALL;

2.整個數據庫,使用 ON database.*;

3.特定的表,使用 ON database.table;

4.特定的列;

5.特定的存儲過程。

下表列出可以授予或撤銷的每個權限。

MySQL設置訪問權限實例詳解

MySQL設置訪問權限實例詳解

使用 GRANT 和 REVOKE ,再結合表中列出的權限,你能對用戶可以就你的寶貴數據做什么事情和不能做什么事情具有完全的控制。

未來的授權 在使用 GRANT 和 REVOKE 時,用戶賬號必須存在,但對所涉及的對象沒有這個要求。這允許管理員在創建數據庫和表之前設計和實現安全措施。

這樣做的副作用是,當某個數據庫或表被刪除時(用 DROP 語句),相關的訪問權限仍然存在。而且,如果將來重新創建該數據庫或表,這些權限仍然起作用。

簡化多次授權 可通過列出各權限并用逗號分隔,將多條GRANT 語句串在一起,如下所示:

GRANT?SELECT,INSERT?ON?crashcourse.*?TO?bforta;

【相關推薦】

Mysql免費視頻教程

2.?Mysql免費視頻教程

3.?Mysql免費視頻教程

4.?Mysql免費視頻教程

5.?Mysql免費視頻教程

? 版權聲明
THE END
喜歡就支持一下吧
點贊6 分享