一、MySQL用戶的基本說明:
1.1 用戶的基本結構
MySQL的用戶:用戶名@主機
■用戶名:16個字符以內
■主機:可以是主機名、IP地址、網絡地址等
主機名:www.xxx.com,localhost
IP:192.168.0.1
網絡地址:172.16.0.0/255.255.0.0
主機還支持通配符:%和_
172.16.%.%
%.toxingwang.com
注意:對於包含了主機名的用戶,MySQL會嘗試反解析主機名,此時可能會造成連接非常慢,如果反解析的IP地址與連接點的地址不同,還可能出現無法連接的情況。因此,為了加快連接並避免出現解析問題,可以在my.cnf文件中加入如下一行加速連接:
--skip-name-resolve
MySQL用戶的密碼有MySQL內部的password()函數管理。
1.2 授權表:
MySQL用戶只是用於認證,而用戶具有的權限有相應的授權機制實現。首先MySQL用戶授權的,主要為如下劉張表:
user: Contains user accounts, global privileges, and other non-privilege columns.
user: 用戶帳號、全局權限
db: Contains database-level privileges.
db: 庫級別權限
host: Obsolete.
host: 廢棄
tables_priv: Contains table-level privileges.
tables_priv: 表級別權限
columns_priv: Contains column-level privileges.
columns_priv: 列級別權限
procs_priv: Contains stored procedure and function privileges.
procs_priv: 存儲過程和存儲函數相關的權限
proxies_priv: Contains proxy-user privileges.
proxies_priv: 代理用戶權限
在MySQL數據庫服務啟動後,這六張表會被直接加載到內存,而今後所有的認證都直接從內存中這六張表獲取,而不是去讀取磁盤。
1.3 各授權表的說明:
■user表范圍列決定是否允許或拒絕到來的連接。對於允許的連接,user表授予的權限指出用戶的全局(超級用戶)權限。這些權限適用於服務器上的all數據庫。
■db表范圍列決定用戶能從哪個主機存取哪個數據庫。權限列決定允許哪個操作。授予的數據庫級別的權限適用於數據庫和它的表。
■tables_priv和columns_priv表類似於db表,但是更精致:它們在表和列級應用而非在數據庫級。授予表級別的權限適用於表和所有它的列。授予列級別的權限只適用於專用列。
■procs_priv表適用於保存的程序。授予程序級別的權限只適用於單個程序。
管理權限(例如RELOAD或SHUTDOWN等等)僅在user表中被指定。這是因為管理性操作是服務器本身的操作並且不是特定數據庫,因此沒有理由在其他授權表中列出這樣的權限。事實上,只需要查詢user表來決定你是否執行一個管理操作。
FILE權限也僅在user表中指定。它不是管理性權限,但你在服務器主機上讀或寫文件的能力與你正在存取的數據庫無關。
當mysqld服務器啟動時,將授權表的內容讀入到內存中。你可以通過FLUSH PRIVILEGES語句或執行mysqladmin flush-privileges或mysqladmin reload命令讓它重新讀取表。
二、MySQL提供的權限
賬戶權限信息被存儲在mysql數據庫的user、db、host、tables_priv、columns_priv和procs_priv表中。在MySQL啟動時時,服務器將這些數據庫表內容讀入內存。
GRANT和REVOKE語句所用的涉及權限的名稱顯示在下表,還有在授權表中每個權限的表列名稱和每個權限有關的上下文。
權限
列
上下文
CREATE
Create_priv
數據庫、表或索引
DROP
Drop_priv
數據庫或表
GRANT OPTION
Grant_priv
數據庫、表或保存的程序
REFERENCES
References_priv
數據庫或表
ALTER
Alter_priv
表
DELETE
Delete_priv
表
INDEX
Index_priv
表
INSERT
Insert_priv
表
SELECT
Select_priv
表
UPDATE
Update_priv
表
CREATE VIEW
Create_view_priv
視圖
SHOW VIEW
Show_view_priv
視圖
ALTER ROUTINE
Alter_routine_priv
保存的程序
CREATE ROUTINE
Create_routine_priv
保存的程序
EXECUTE
Execute_priv
保存的程序
FILE
File_priv
服務器主機上的文件訪問
CREATE TEMPORARY TABLES
Create_tmp_table_priv
服務器管理