GRANT priv_type [(column_list)] [, priv_type [(column_list)]] ...
ON [object_type] {tbl_name | * | *.* | db_name.*}
TO user [IDENTIFIED BY [PASSWORD] 'password']
[, user [IDENTIFIED BY [PASSWORD] 'password']] ...
[REQUIRE
NONE |
[{SSL| X509}]
[CIPHER 'cipher' [AND]]
[ISSUER 'issuer' [AND]]
[SUBJECT 'subject']]
[WITH with_option [with_option] ...]
object_type =
TABLE
| FUNCTION
| PROCEDURE
with_option =
GRANT OPTION
| MAX_QUERIES_PER_HOUR count
| MAX_UPDATES_PER_HOUR count
| MAX_CONNECTIONS_PER_HOUR count
| MAX_USER_CONNECTIONS count
REVOKE priv_type [(column_list)] [, priv_type [(column_list)]] ...
ON [object_type] {tbl_name | * | *.* | db_name.*}
FROM user [, user] ...
REVOKE ALL PRIVILEGES, GRANT OPTION FROM user [, user] ...
GRANT和REVOKE语句允许系统管理员创建MySQL用户 账户,授予权限和撤销权限。
MySQL账户信息存储在mysql数据库的表中。在第5章:数据库管理中对本数据库和访问控制系统进行了详尽的讨论。要了解更多详细信息,您应该查询此章。
如果授权表拥有含有mixed-case数据库或表名称的权限记录,并且lower_case_table_names系统变量已设置,则不能使用REVOKE撤销权限,必须直接操纵授权表。(当lower_case_table_names已设置时,GRANT将不会创建此类记录,但是此类记录可能已经在设置变量之前被创建了。)
授予的权限可以分为多个层级:
·全局层级
全局权限适用于一个给定服务器中的所有数据库。这些权限存储在mysql.user表中。GRANT ALL ON *.*和REVOKE ALL ON *.*只授予和撤销全局权限。
·数据库层级
数据库权限适用于一个给定数据库中的所有目标。这些权限存储在mysql.db和mysql.host表中。GRANT ALL ON db_name.*和REVOKE ALL ON db_name.*只授予和撤销数据库权限。
注:
授权root 本地登录时候,给予所有权限,
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION
当后续目标是一个表、一个已存储的函数或一个已存储的过程时,object_type子句应被指定为TABLE、FUNCTION或PROCEDURE。当从旧版本的MySQL升级时,要使用本子句,您必须升级您的授权表。请参见2.10.2节,“升级授权表”。
要使用GRANT或REVOKE,您必须拥有GRANT OPTION权限,并且您必须用于您正在授予或撤销的权限。
要撤销所有权限,需使用以下语法。此语法用于取消对于已命名的用户的所有全局层级、数据库层级、表层级和列层级的权限。
REVOKE ALL PRIVILEGES, GRANT OPTION FROM user [, user] ...
要使用本REVOKE语法,您必须拥有mysql数据库的全局CREATE USER权限或UPDATE权限。
对于GRANT和REVOKE语句,priv_type可以被指定为以下任何一种:
权限
意义
ALL [PRIVILEGES]
设置除GRANT OPTION之外的所有简单权限
ALTER
允许使用ALTER TABLE
ALTER ROUTINE
更改或取消已存储的子程序
CREATE
允许使用CREATE TABLE
CREATE ROUTINE
创建已存储的子程序
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
允许用户运行已存储的子程序
FILE
允许使用SELECT...INTO OUTFILE和LOAD DATA INFILE
INDEX
允许使用CREATE INDEX和DROP INDEX
INSERT
允许使用INSERT
LOCK TABLES
允许对您拥有SELECT权限的表使用LOCK TABLES
PROCESS
允许使用SHOW FULL PROCESSLIST
REFERENCES
未被实施
RELOAD
允许使用FLUSH
REPLICATION CLIENT
允许用户询问从属服务器或主服务器的地址
REPLICATION SLAVE
用于复制型从属服务器(从主服务器中读取二进制日志事件)
SELECT
允许使用SELECT
SHOW DATABASES
SHOW DATABASES显示所有数据库
SHOW VIEW
允许使用SHOW CREATE VIEW
SHUTDOWN
允许使用mysqladmin shutdown
SUPER
允许使用CHANGE MASTER, KILL, PURGE MASTER LOGS和SET GLOBAL语句,mysqladmin debug命令;允许您连接(一次),即使已达到max_connections。
UPDATE
允许使用UPDATE
USAGE
“无权限”的同义词
GRANT OPTION
允许授予权限
·列层级
列权限适用于一个给定表中的单一列。这些权限存储在mysql.columns_priv表中。当使用REVOKE时,您必须指定与被授权列相同的列。
·子程序层级
CREATE ROUTINE, ALTER ROUTINE, EXECUTE和GRANT权限适用于已存储的子程序。这些权限可以被授予为全局层级和数据库层级。而且,除了CREATE ROUTINE外,这些权限可以被授予为子程序层级,并存储在mysql.procs_priv表中。
分享到:
2011-05-19 12:59
浏览 2547
分类:数据库
评论