1.访问控制
在比较复杂的数据库系统中,对于各个用户的权限管理是非常重要的,有一些用户可以对数据库进行查找操作,但我们不想让他有对表进行更改的权限。但是有一些用户又需要有更改表甚至创建表与删除表
的权限,因此每个用户的权限不能一概而论,应该根据实际情况进行分配。
2.管理用户
创建用户账号:
CREATE USER ben IDENTIFIED BY '123455';
CREATE USER语句用于创建账户,IDENTIFIED BY表示用户口令为纯文本。
账户的重命名:
RENAME USER ben TO newben;
删除用户账号:
DROP USER newben;
3.设置访问权限
在创建用户账号之后,接着就必须给他们分配访问权限。刚刚创建好的帐号没有访问权限,能登录MySQL但是不能看到数据与执行任何操作。
查看用户当前的权限:
SHOW GRANTS FOR newben;
授予用户权限使用GRANT语句:
GRANT SELECT ON crashcourse.* TO newben;
这个语句允许用户newben在crashcourse.*(crashcourse数据库的所有表)中拥有SELECT权限。
撤销用户的某一权限使用REVOKE语句。
使用GRANT与REVOKE对用户权限进行操作的几种情况:
(1)整个服务器,使用GRANT ALL和REVOKE ALL;
(2)整个数据库,使用ON database.*;
(3)特定的表,使用ON database.table;
(4)特定的列;
(5)特定的存储过程。
MySQL中的可以授予或撤销的权限:
权限 | 说明 |
---|---|
ALL | 除了GRANT OPTION之外的所有权限 |
ALTER | 使用ALTER TABLE 的权限 |
ALTER ROUTINE | 使用ALTER PROCEDUCE和DROP PROCEDUCE的权限 |
CREATE | 使用CREATE TABLE的权限 |
CREATE ROUTINE | 使用CREATE PROCEDUCE的权限 |
CREATE TEMPORARY TABLES | 使用CREATE TEMPORARY TABLES的权限 |
CREATE USER | 使用CREATE USER的权限 |
CREATE VIEW | 使用CREATE VIEW的权限 |
DELETE | 使用DELETE的权限 |
DROP | 使用DROP的权限 |
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 |
UPDATE | 使用UPDATE的权限 |
USAGE | 无访问权限 |