數據庫服務器一般包含關鍵的數據,確保這些數據的安全和完整須要利用訪問控制。html
MySQL服務器的安全基礎:用戶應該對他們須要的數據具備適當的訪問權,既不能多也不能少。mysql
訪問控制:你須要給用戶提供他們所需的訪問權,且僅提供他們所需的訪問權。sql
在平常工做中,毫不能使用root,應該建立一系列的帳號,有的用於管理,有的供用戶使用,有的供開發人員使用等等。數據庫
防止無心的錯誤:訪問控制的目的不單單是防止用戶的惡意企圖。數據夢魘更爲常見的事無心識錯誤的結果,如錯打MySQL語句,在不適合的數據庫中操做或其餘一些用戶錯誤。經過保證用戶不能執行他們不該該執行的語句,訪問控制有助於避免這些狀況的發生。安全
MySQL用戶帳號和信息存儲在名爲mysql的MySQL數據庫中。通常不須要直接訪問mysql數據庫和表,但有時須要直接訪問。須要直接訪問他的時機之一是在須要得到全部用戶帳號列表時。服務器
USE mysql;
SELECT user,host FROM user;
CREATE USER username IDENTIFIED BY 'password';
函數
爲用戶帳號重命名:RENAME USER username TO otherusername;
加密
DROP USER username;
code
在建立用戶帳號後,必須接着分配訪問權限。新建立的用戶帳號沒有訪問權限。它們能登陸MySQL,但不能看到數據,不能執行任何數據庫操做。htm
查看賦予用戶帳號的權限:
SHOW GRANTS FOR username;
+————————————————————-+
| Grants for username@% |
+——————————————————— —+
| GRANT USAGE ON . TO 'username'@'%' |
+————————————————————-+
爲設置權限,使用GRANT語句。GRANT要求你至少給出如下信息:
要授予的權限;
被授予訪問權限的數據庫或表;
用戶名。
Example:
GRANT SELECT ON database.* TO username;
分析:此GRANT容許用戶在database數據庫的全部表(databasename.)上使用SELECT。用戶username對database數據庫中的全部數據具備只讀訪問權限。
GRANT的反操做爲REVOKE,用它來撤銷特定的權限。
REVOKE SELECT ON database.
FROM username;
撤銷用戶username的SELECT訪問權限。被撤銷的訪問權限必須存在,不然會出錯。
SET PASSWORD FOR user = Password('passworded');
Password()函數進行加密。
在不指定用戶名時,SET PASSWORD更新當前登陸用戶的口令。