Mysql權限
select、insert、update和delete權限允許你在一個數據庫現有的表上實施操作。
SELECT
語句只有在他們真正從一個表中檢索行是才需要select權限,你可以執行某個SELECT
語句,甚至沒有任何到服務器上的數據庫裏的存取任何東西的許可。例如,你可使用mysql
客戶作為一個簡單的計算器:
mysql> SELECT 1+1; mysql> SELECT PI()*2;
index權限允許你創建或拋棄(刪除)索引。
alter權限允許你使用ALTER TABLE
。
create和drop權限允許你創建新的數據庫和表,或拋棄(刪除)現存的數據庫和表。
註意:如果你將mysql
數據庫的drop權限授予一個用戶,該用戶能拋棄存儲了MySQL存取權限的數據庫!
grant權限允許你把你自己擁有的那些權限授給其他的用戶。
file權限給予你用LOAD DATA INFILE
和SELECT ... INTO OUTFILE
語句讀和寫服務器上的文件,任何被授予這個權限的用戶都能讀或寫MySQL服務器能讀或寫的任何文件。
其余的權限用於管理性操作,它使用mysqladmin
程序實施。下表顯示mysqladmin
支配每個管理性權限允許你執行的命令:
reload
命令告訴服務器再讀入授權表,refresh
flush-privileges
是reload
的一個同義詞,其它flush-*
命令執行類似refresh
的功能,但是範圍更有限,並且在某些情況下可能更好用。例如,如果你只是想清洗記錄文件,flush-logs
比refresh
是更好的選擇。
shutdown
命令關掉服務器。
processlist
命令顯示在服務器內執行的線程的信息。kill
命令殺死服務器線程。你總是能顯示或殺死你自己的線程,但是你需要process權限來顯示或殺死其他用戶啟動的線程。
總的說來,只授予權限給需要他們的那些用戶是一個好主意,但是你應該在授予某個權限時試驗特定的警告:
- grant權限允許用戶放棄他們的權限給其他用戶。2個有不同的權限並有grant權限的用戶可以合並權限。
- alter權限可以用於通過重新命名表來推翻權限系統。
- file權限可以被濫用在服務器上讀取任何世界可讀(world-readable,即任何人可讀)的文件到一張數據庫表,然後其內容能用
SELECT
被存取。 - shutdown權限通過終止服務器可以被濫用完全拒絕為其他用戶服務, 。
- precess權限能被用來察看當前執行的查詢的普通文本,包括設定或改變口令查詢。
- 在
mysql
數據庫上的權限能被用來改變口令和其他存取權限信息。(口令被加密存儲,所以一個惡意的用戶不能簡單地讀取他們。然而,有足夠的權限,同一個用戶能用不同的一個代替一個口令。)
有一些事情你不能用MySQL權限系統做到:
- 你不能明顯地指定一個給定用戶應該被拒絕存取。即,你不能明顯地匹配一個用戶並且然後拒絕連接。
- 你不能指定一個用戶有權創建立或拋棄一個數據庫中的表,也不能創建或拋棄數據庫本身。
Mysql權限