MySQL權限系統的主要功能是驗證從給定主機鏈接的用戶,並將該用戶與數據庫上的權限(如select, insert, update和delete)相關聯。附加功能包括維護匿名用戶,授予MySQL特定功能(如load data infile)和管理性操做的權限。mysql
MySQL權限系統具備以下限制:sql
● 不具有用戶黑名單功能數據庫
即不能顯式指定拒絕訪問的用戶列表。也就是說,你不能顯式指定一個用戶,讓MySQL拒絕其鏈接;服務器
● 建表刪表和建庫刪庫的權限緊密相連不可分割spa
即有權限建表刪表就有權限建庫刪庫,有建庫刪庫的權限就有建表刪表的權限。也就是說,你不能爲用戶指定權限,使其能夠在數據庫中建表刪表,但又不能建立或者刪除數據庫自己;對象
● 密碼只能在全局範圍內做用於一個帳號接口
即你不能爲特定對象,如數據庫,表或例程,賦予密碼;
內存
MySQL權限系統的用戶接口由SQL語句組成,如create user, grant和revokedate
在內部,MySQL將權限信息存儲在「mysql」數據庫的權限表中。MySQL服務器在啓動時將這些權限表的內容讀入內存,並基於這些內存副本進行訪問控制決策file
MySQL權限系統確保全部用戶只能執行自各自容許的操做。做爲一個用戶,當你鏈接到MySQL服務器時,你的身份由你鏈接的主機和你指定的用戶名決定。當你在鏈接完成後發出請求時,系統將根據你的身份和你想要執行的操做來賦予權限
MySQL使用主機名和用戶名來識別你的身份,由於沒有理由相信來自不一樣主機的相同用戶屬於同一我的,例如從office.example.com鏈接的用戶joe與從home.example.com鏈接的用戶joe可能不是一我的。MySQL經過對來自不一樣主機的相同用戶進行區分來解決這個問題:你能夠對從office.example.com鏈接的用戶joe賦予一組權限,而對從home.example.com鏈接的用戶joe賦予另外一組權限。
要查看給定帳號的權限,請使用「show grants」語句,例如:
MySQL訪問控制包括兩個階段:
① 服務器根據你的身份以及你所提供的密碼正確與否,接受或拒絕鏈接;
② 鏈接成功後,服務器將檢查你所發出的每一個語句,以肯定你是否有足夠的權限執行它。例如,若是你嘗試從表中檢索行或者從數據庫中刪除表,則服務器將驗證你是否擁有表的select權限或數據庫的drop權限;