設定存取權
在建立使用者帳號後,必須接著指派存取權限。新建立的使用者帳號沒有存取權限。它們能登入MySQL,但不能看到數據,不能執行任何資料庫操作。
為看到賦予使用者帳號的權限,使用SHOW GRANTS FOR ,如下所示:
#輸入:
SHOW GRANTS FOR bforta;
登入後複製
登入後複製
輸入:
![149518379358546MySQL設定存取權限實例詳解 MySQL設定存取權限實例詳解](https://img.php.cn//upload/image/915/546/700/149518379358546MySQL設定存取權限實例詳解)
##分析:輸出結果顯示使用者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;
登入後複製
登入後複製
輸出:
![1495183822996827.png MySQL設定存取權限實例詳解](https://img.php.cn//upload/image/211/565/996/1495183822996827.png)
分析:每個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.特定的預存程序。
下表列出可以授予或撤銷的每個權限。
![149518390733220MySQL設定存取權限實例詳解 MySQL設定存取權限實例詳解](https://img.php.cn//upload/image/393/703/740/149518390733220MySQL設定存取權限實例詳解)
![149518391665108MySQL設定存取權限實例詳解 MySQL設定存取權限實例詳解](https://img.php.cn//upload/image/431/873/215/149518391665108MySQL設定存取權限實例詳解)
使用GRANT 和REVOKE ,再結合表格中列出的權限,你能對使用者可以就你的寶貴資料做什麼事情和不能做什麼事情有完全的控制。
未來的授權 在使用 GRANT 和 REVOKE 時,使用者帳號必須存在,但對所涉及的物件沒有這個要求。這允許管理員在建立資料庫和表格之前設計和實現安全措施。
這樣做的副作用是,當某個資料庫或表被刪除時(用 DROP 語句),相關的存取權限仍然存在。而且,如果將來重新建立該資料庫或表,這些權限仍然會起作用。
簡化多次授權可透過列出各權限並以逗號分隔,將多個GRANT 語句串在一起,如下所示:
GRANT SELECT,INSERT ON crashcourse.* TO bforta;
登入後複製
【相關推薦】
Mysql免費影片教學
2.
MySQL建立使用者帳號和刪除使用者帳號
3.
#mysql管理使用者、更改口令的命令列實例操作
4.
mysql存取控制的幾個注意要點
5.
MySQL使用字元集和校對順序使用教程
以上是MySQL設定存取權限實例詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!