你须要给用户提供他们所需的访问权,且仅提供他们所需的访问权。这就是所谓的访问控制,管理访问控制须要建立和管理用户帐号。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)