1 授權表范圍列的大小寫敏感性
+--------------+-----+-----+---------+----+-----------+------------+
| 列 |Host |User |Password |Db |Table_name |Column_name |
| 大小寫敏感性 |No |Yes |Yes |Yes |Yes |No |
+--------------+-----+-----+---------+----+-----------+------------+
2 授權表權限列
授權表還包含權限列,他們指出在范圍列中指定的用戶擁有何種權限。
+------------+-----------------+----------------------+
| 權限 | 列 | 作用域 |
+------------+-----------------+----------------------+
| select | Select_priv | 表 |
| insert | Insert_priv | 表 |
| update | Update_priv | 表 |
| delete | Delete_priv | 表 |
| index | Index_priv | 表 |
| alter | Alter_priv | 表 |
| create | Create_priv | 數據庫、表或索引 |
| drop | Drop_priv | 數據庫或表 |
| grant | Grant_priv | 數據庫或表 |
| references | References_priv | 數據庫或表 |
| reload | Reload_priv | 服務器管理 |
| shutdown | Shutdown_priv | 服務器管理 |
| process | Process_priv | 服務器管理 |
| file | File_priv | 在服務器上的文件存取 |
+------------+-----------------+----------------------+
3.數據庫和表權限
下列權限運用於數據庫和表上的操作。
ALTER
允許使用ALTER TABLE語句
CREATE
允許創建數據庫和表,但不允許創建索引。
DELETE
允許從表中刪除現有記錄。
DROP
允許刪除(拋棄)數據庫和表,但不允許刪除索引。
INDEX
允許創建並刪除索引。
REFERENCES
目前不用。
SELECT
允許使用SELECT語句從表中檢索數據。對不涉及表的SELECT語句就不必要,如SELECT NOW()或SELECT 4/2。
UPDATE
允許修改表中的已有的記錄。
管理權限
下列權限運用於控制服務器或用戶授權能力的操作的管理性操作。
FILE
允許讀寫服務器主機上的文件。該權限不應該隨便授予,它很危險。
雖然已經授予讀寫權限,但所寫的文件必須不是現存的文件,
這防止你迫使服務器重寫重要文件,如/etc/passwd或屬於別人的數據庫的數據目錄。
如果授權FILE權限,確保UNIX不以root用戶運行服務器,因為root可在文件系統的任何地方創建新文件。
如果你以一個非特權用戶運行服務器,服務器只能該給用戶能訪問的目錄中創建文件。
GRANT
允許將自己的權限授予別人,包括GRANT。
PROCESS www.111cn.net
允許通過使用SHOW PROCESS語句或mysqladmin process命令查看服務器內正在運行的線程(進程)的信息。
這個權限也允許你用KILL語句或mysqladmin kill命令殺死線程。
你同樣可以看到或殺死你自己的線程。
PROCESS權限賦予了你對任何線程做這些事情的權力。
RELOAD
允許執行大量的服務器管理操作。
你可以發出FLUSH語句,
你也能執行mysqladmin的reload、refresh、flush-hosts、flush-logs、flush-privileges和flush-tables等命令。
SHUTDOWN
允許用mysqladmin shutdown關閉服務器。
用戶權限
實例:
例如:
指定用戶訪問,設置訪問密碼,指定訪問主機。
① 設置訪問單個數據庫權限
01.mysql>grant all privileges on test.* to 'root'@'%';(說明:設置用戶名為root,密碼為空,可訪問數據庫test)
②設置訪問全部數據庫權限
01.mysql>grant all privileges on *.* to 'root'@'%';(說明:設置用戶名為root,密碼為空,可訪問所有數據庫*)
③設置指定用戶名訪問權限
01.mysql>grant all privileges on *.* to 'lanping'@'%';(說明:設置指定用戶名為 lanping ,密碼為空,可訪問所有數據庫*)
④設置密碼訪問權限
01.mysql>grant all privileges on *.* to 'lanping'@'%' IDENTIFIED BY ' lanping';(說明:設置指定用戶名為 lanping ,密碼為 lanping ,可訪問所有數據庫*)
⑤設置指定可訪問主機權限
01.mysql>grant all privileges on *.* to ' lanping '@'10.2.1.11';說明:設置指定用戶名為 lanping ,可訪問所有數據庫*,只有127.0.0.1這台機器有權限訪問
REVOKE
REVOKE和作用和GRANT相反,語法格式為:
REVOKE privileges ON 數據庫名[.表名] FROM user_name
例如:
創建用戶Bob,密碼為“bob”,但不給他任何權限:
GRANT usage on * to Bob identified by ’bob’;
授予Bob在books數據庫中的查詢和插入權限:
GRANT select, insert on books.* to Bob;
取消Bob在books數據庫中的所有權限:
REVOKE all on books.* from Bob;
注:需要指出的是,REVOKE all...僅僅是回收用戶的權限,並不刪除用戶。在MySQL中,用戶信息存放在mysql.User中。MySQL可以通過DROP USER來徹底刪除一個用戶,其用法為:
DROP USER user_name;
例如,要刪除用戶Bob,可以用:
DROP USER Bob;