《Mysql學習mysql數據庫用戶與權限管理學習筆記》要點:
本文介紹了Mysql學習mysql數據庫用戶與權限管理學習筆記,希望對您有用。如果有疑問,可以聯系我們。
一、MySQL用戶的基本說明:MYSQL應用
1.1 用戶的基本結構
MySQL的用戶:用戶名@主機MYSQL應用
■用戶名:16個字符以內
■主機:可以是主機名、IP地址、網絡地址等
主機名:www.jbxue.com,localhostMYSQL應用
IP:192.168.0.1MYSQL應用
網絡地址:172.16.0.0/255.255.0.0MYSQL應用
主機還支持通配符:%和_MYSQL應用
172.16.%.%MYSQL應用
%.jbxue.com
注意:對于包含了主機名的用戶,MySQL會嘗試反解析主機名,此時可能會造成連接非常慢,如果反解析的IP地址與連接點的地址不同,還可能出現無法連接的情況.因此,為了加快連接并避免出現解析問題,可以在my.cnf文件中加入如下一行加速連接:MYSQL應用
--skip-name-resolve
MySQL用戶的密碼有MySQL內部的password()函數管理.MYSQL應用
1.2 授權表:
MySQL用戶只是用于認證,而用戶具有的權限有相應的授權機制實現.首先MySQL用戶授權的,主要為如下劉張表:MYSQL應用
user: Contains user accounts, global privileges, and other non-privilege columns.
user: 用戶帳號、全局權限MYSQL應用
db: Contains database-level privileges.
db: 庫級別權限MYSQL應用
host: Obsolete.
host: 廢棄MYSQL應用
tables_priv: Contains table-level privileges.
tables_priv: 表級別權限MYSQL應用
columns_priv: Contains column-level privileges.
columns_priv: 列級別權限MYSQL應用
procs_priv: Contains stored procedure and function privileges.
procs_priv: 存儲過程和存儲函數相關的權限MYSQL應用
proxies_priv: Contains proxy-user privileges.
proxies_priv: 代理用戶權限
在MySQL數據庫服務啟動后,這六張表會被直接加載到內存,而今后所有的認證都直接從內存中這六張表獲取,而不是去讀取磁盤.MYSQL應用
1.3 各授權表的說明:
■ user表范圍列決定是否允許或拒絕到來的連接.對于允許的連接,user表授予的權限指出用戶的全局(超級用戶)權限.這些權限適用于服務器上的all數據庫.
■ db表范圍列決定用戶能從哪個主機存取哪個數據庫.權限列決定允許哪個操作.授予的數據庫級別的權限適用于數據庫和它的表.
■ tables_priv和columns_priv表類似于db表,但是更精致:它們在表和列級應用而非在數據庫級.授予表級別的權限適用于表和所有它的列.授予列級別的權限只適用于專用列.
■ procs_priv表適用于保存的程序.授予程序級別的權限只適用于單個程序.
管理權限(例如RELOAD或SHUTDOWN等等)僅在user表中被指定.這是因為管理性操作是服務器本身的操作并且不是特定數據庫,因此沒有理由在其他授權表中列出這樣的權限.MYSQL應用
事實上,只需要查詢user表來決定你是否執行一個管理操作.MYSQL應用
FILE權限也僅在user表中指定.它不是管理性權限,但你在服務器主機上讀或寫文件的能力與你正在存取的數據庫無關.MYSQL應用
當mysqld服務器啟動時,將授權表的內容讀入到內存中.
可以通過FLUSH PRIVILEGES語句或執行mysqladmin flush-privileges或mysqladmin reload命令讓它重新讀取表.MYSQL應用
二、MySQL提供的權限
賬戶權限信息被存儲在mysql數據庫的user、db、host、tables_priv、columns_priv和procs_priv表中.
在MySQL啟動時時,服務器將這些數據庫表內容讀入內存.MYSQL應用
GRANT和REVOKE語句所用的涉及權限的名稱顯示在下表,還有在授權表中每個權限的表列名稱和每個權限有關的上下文.MYSQL應用
權限 列 上下文
?
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
?服務器管理
?
LOCK TABLES
?Lock_tables_priv
?服務器管理
?
CREATE USER
?Create_user_priv
?服務器管理
?
PROCESS
?Process_priv
?服務器管理
?
RELOAD
?Reload_priv
?服務器管理
?
REPLICATION CLIENT
?Repl_client_priv
?服務器管理
?
REPLICATION SLAVE
?Repl_slave_priv
?服務器管理
?
SHOW DATABASES
?Show_db_priv
?服務器管理
?
SHUTDOWN
?Shutdown_priv
?服務器管理
?
SUPER
?Super_priv
?服務器管理
?
三、權限更改何時生效
當mysqld啟動時,所有授權表的內容被讀進內存并且從此時生效.MYSQL應用
當服務器注意到授權表被改變了時,現存的客戶端連接有如下影響:
■ 表和列權限在客戶端的下一次哀求時生效.
■ 數據庫權限改變在下一個USE db_name命令生效.
■ 全局權限的改變和密碼改變在下一次客戶端連接時生效.
如果用GRANT、REVOKE或SET PASSWORD對授權表進行修改,服務器會注意到并立即重新將授權表載入內存.
MYSQL應用
維易PHP培訓學院每天發布《Mysql學習mysql數據庫用戶與權限管理學習筆記》等實戰技能,PHP、MYSQL、LINUX、APP、JS,CSS全面培養人才。