MySQL的账户与权限管理(GRANT与REVOKE的用法)
2009-12-16 17:51
811 查看
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.*只授予和撤销数据库权限。· 表层级表权限适用于一个给定表中的所有列。这些权限存储在mysql.talbes_priv表中。GRANT ALL ON db_name.tbl_name和REVOKE ALL ON db_name.tbl_name只授予和撤销表权限。· 列层级列权限适用于一个给定表中的单一列。这些权限存储在mysql.columns_priv表中。当使用REVOKE时,您必须指定与被授权列相同的列。· 子程序层级CREATE ROUTINE, ALTER ROUTINE, EXECUTE和GRANT权限适用于已存储的子程序。这些权限可以被授予为全局层级和数据库层级。而且,除了CREATE ROUTINE外,这些权限可以被授予为子程序层级,并存储在mysql.procs_priv表中。当后续目标是一个表、一个已存储的函数或一个已存储的过程时,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> GRANT ALL ON test.* TO ''@'localhost' ...当把带引号的值是,需使用反勾号(‘`’)为数据库、表、列和子程序名称加引号。使用单引号(‘'’)为hostnames、usernames和密码加引号。警告:如果您允许匿名用户连接到MySQL服务器,则您应该同时向所有本地用户授予user_name@localhost权限。否则,当有名称的用户试图从本地机器登录MySQL服务器时,mysql.user表中的用于localhost的匿名用户帐户会被使用。
相关文章推荐
- MYSQL用户权限管理(Grant,Revoke)
- MYSQL用户权限管理(Grant,Revoke)
- MYSQL用户权限管理(Grant,Revoke)
- MYSQL用户权限管理(Grant,Revoke) 【转】
- MYSQL用户权限管理(Grant,Revoke)
- MYSQL用户权限管理(Grant,Revoke)
- MYSQL用户权限管理(Grant,Revoke)
- MySql用户权限配置管理--查看,赋予,回收(GRANT,REVOKE)
- MYSQL用户权限管理(Grant,Revoke)
- mysql 权限管理使用 grant/revoke
- mysql用户权限管理(Grant,Revoke)
- mysql管理用户权限grant与revoke命令
- Mysql权限管理grant命令使笔记
- Mysql权限管理grant命令使笔记
- mysql赋权与收回权限(grant&revoke) 删除权限
- MySQL可使用GRANT和REVOKE的权限设置
- 【转】mysql查看用户权限与GRANT用法
- mysql赋权与收回权限(grant&revoke)
- 日常写BUG——MYSQL用户创建及权限管理GRANT使用
- [MySQL]查看用户权限与GRANT用法