你須要給用戶提供他們所需的訪問權,且僅提供他們所需的訪問權。這就是所謂的訪問控制,管理訪問控制須要建立和管理用戶帳號。mysql
不要使用root 應該嚴肅對待root登陸的使用。僅在絕對須要時使用它(或許在你不能登陸其餘管理帳號時使用)。不該該在平常的MySQL操做中使用root。sql
mysql> USE mysql; Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A Database changed mysql> SELECT user FROM user; +------------------+ | user | +------------------+ | debian-sys-maint | | mysql.infoschema | | mysql.session | | mysql.sys | | root | +------------------+ 5 rows in set (0.00 sec)
mysql> CREATE USER ben IDENTIFIED BY 'p@$$w0rd'; Query OK, 0 rows affected (0.06 sec)
CREATE USER建立一個新用戶帳號。在建立用戶帳號時不必定須要口令。數據庫
指定散列口令 IDENTIFIED BY指定的口令爲純文本,MySQL將在保存到user表以前對其進行加密。爲了做爲散列值指定口令,使用IDENTIFIED BY PASSWORD。安全
使用GRANT或INSERT GRANT語句(稍後介紹)也能夠建立用戶帳號,但通常來講CREATE USER是最清楚和最簡單的句子。此外,也能夠經過直接插入行到user表來增長用戶,不過爲安全起見,通常不建議這樣作。MySQL用來存儲用戶帳號信息的表(以及表模式等)極爲重要,對它們的任何毀壞均可能嚴重地傷害到MySQL服務器。所以,相對於直接處理來講,最好是用標記和函數來處理這些表。服務器
mysql> RENAME USER ben TO bforta; Query OK, 0 rows affected (0.01 sec)
mysql> DROP USER bforta; Query OK, 0 rows affected (0.00 sec)
SHOW GRANTS FOR username@localhost;
爲設置權限,使用GRANT語句。GRANT要求你至少給出如下信息:session
GRANT SELECT ON crashcourse.* TO bforta;
GRANT的反操做爲REVOKE,用它來撤銷特定的權限。函數
REVOKE SELECT ON crashcourse.* FROM bforta;
GRANT和REVOKE可在幾個層次上控制訪問權限:ui
列出能夠授予或撤銷的每一個權限。this
權 限 | 說 明 |
---|---|
ALL | 除GRANT OPTION外的全部權限 |
ALTER | 使用ALTER TABLE |
ALTER ROUTINE | 使用ALTER PROCEDURE和DROP PROCEDURE |
CREATE | 使用CREATE TABLE |
CREATE ROUTINE | 使用CREATE PROCEDURE |
CREATE TEMPORARY TABLES | 使用CREATE TEMPORARY TABLE |
CREATE USER | 使用CREATE USER、DROP USER、RENAME USER和REVOKE ALL PRIVILEGES |
CREATE VIEW | 使用CREATE VIEW |
DELETE | 使用DELETE |
DROP | 使用DROP TABLE |
EXECUTE | 使用CALL和存儲過程 |
FILE | 使用SELECT INTO OUTFILE和LOAD DATA INFILE |
GRANT OPTION | 使用GRANT和REVOKE |
INDEX | 使用CREATE INDEX和DROP INDEX |
INSERT | 使用INSERT |
LOCK TABLES | 使用LOCK TABLES |
PROCESS | 使用SHOW FULL PROCESSLIST |
RELOAD | 使用FLUSH |
REPLICATION CLIENT | 服務器位置的訪問 |
REPLICATION SLAVE | 由複製從屬使用 |
SELECT | 使用SELECT |
SHOW DATABASES | 使用SHOW DATABASES |
SHOW VIEW | 使用SHOW CREATE VIEW |
SHUTDOWN | 使用mysqladmin shutdown(用來關閉MySQL) |
SUPER | 使用CHANGE MASTER、KILL、LOGS、PURGE、MASTER和SET GLOBAL。還容許mysqladmin調試登陸 |
UPDATE | 使用UPDATE |
USAGE | 無訪問權限 |
mysql> SET PASSWORD FOR bforta=PASSWORD ('P@ssW0rd'); Query OK, 0 rows affected (0.01 sec)
SET PASSWORD更新用戶口令。新口令必須傳遞到Password()函數進行加密。加密
SET PASSWORD還能夠用來設置你本身的口令
mysql> SET PASSWORD =PASSWORD ('P@ssW0rd'); Query OK, 0 rows affected (0.01 sec)