mysql回收grant权限_MySql用户权限配置管理--查看,赋予,回收(GRANT,REVOKE)

MySql用户管理使用CREATE USER,DROP USER,RENAME USER,SET PASSWORD等语法来完成,而MySql中用户权限配置管理中大部分都可以使用GRANT(赋予权限)和REVOKE(撤销权限)这两个语法来操作。其中,需要注意的是GRANT语句来赋予权限时,当被赋予权限的用户在系统中不存在时,会创建该用户,而后对该用户进行权限赋予。而REVOKE语句用来权限回收(撤销权限)时,即使被操作的用户所有的权限都被回收,但该用户并不会删除,要删除用户,请使用DROP USER或者直接到mysql.user中删除该用户。

GRANT

priv_type [(column_list)]

[, priv_type [(column_list)]] ...

ON [object_type] priv_level

TO user_specification [, user_specification] ...

[REQUIRE {NONE | ssl_option [[AND] ssl_option] ...}]

[WITH with_option ...]

object_type:

TABLE

| FUNCTION

| PROCEDURE

priv_level:

*

| *.*

| db_name.*

| db_name.tbl_name

| tbl_name

| db_name.routine_name

user_specification:

user [IDENTIFIED BY [PASSWORD] 'password']

ssl_option:

SSL

| X509

| CIPHER 'cipher'

| ISSUER 'issuer'

| SUBJECT 'subject'

with_option:

GRANT OPTION

| MAX_QUERIES_PER_HOUR count

| MAX_UPDATES_PER_HOUR count

| MAX_CONNECTIONS_PER_HOUR count

| MAX_USER_CONNECTIONS count

看起来有点复杂,对吧,这是标准的帮助文档,我们简而言之,一般语法格式是这样的:

-- GRANT基本的权限赋予语法

GRANT 权限类型1 [(要赋予的对象,列列表)][, 权限类型2[(要赋予的对象,列列表)]]...  ON [对象类型] 权限级别 TO 用户1 IDENTIFIED BY '密码' [, 用户2 IDENTIFIED BY '密码' ]...

-- 中括号内的可以忽略。

这样是不是清楚很多,其中GRANT能够赋予的权限类型有以下这些(Tips:注意ALL PRIVILEGES):

权限

意义

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

允许授予权限

来栗子才能吃饱,没例子,没真相,下面我们使用几个简单的GRANT语句来为特定用户赋予权限:

怎么样,权限粒度可大可小吧,大至全局,小至单列,设置运用都能自如,很有成就感吧?不过需要注意,权限设置完毕之后,如果要马上生效,记得FLUSH PRIVILEGES一下哦。

REVOKE 作为权限撤消语句,和GRANT语句匹配,自然使用的权限列表和GRANT要一样。REVOKE的官方语法是:

REVOKE

priv_type [(column_list)]

[, priv_type [(column_list)]] ...

ON [object_type] priv_level

FROM user [, user] ...

REVOKE ALL PRIVILEGES, GRANT OPTION

FROM user [, user] ...

如果你和我一样,对官方文档中复杂的语法结构描述相当头疼,那么可以看看下面REVOKE常用的语法格式就好了,当然,这只是为了快速理解语法,如果在实际使用中,碰到实际问题,建议还是要深读官方晦涩的标准文档的:

REVOKE 权限类型1[(回收权限的列对象列表)], 权限类型2[(要回收权限的列对象列表)]... ON [对象类型] 权限级别 FROM 要回收权限的用户1 [,要回收权限的用户2]..

REVOKE直接回收FROM后面的用户的权限,要咋回收,就要靠ON指定回收区域,而后REVOKE在根据要回收的权限类型,在这个区域进行回收用户的权限。如果你要回收某用户的所有权限,那么可以简单的使用下面这样的语句:

REVOKE ALL PRIVILEGES, GRANT OPTION FROM 要回收权限的用户

为什么要ALL PRIVILEGES之后还要GRANT OPTION? ―― 请参见前面的权限列表哦。

好了,来几个例子享受下:

code

; MySql用户权限配置管理

记住:在回收完用户权限之后,如果是要删除用户,还需要DROP USER或者到mysql.user中DELETE 一下,不然用户还存在的。要立即生效,也要记得FLUSH PRIVILEGES哦。为什么要使用FLUSH PRIVILEGES?这个是告诉系统,我们已经更改了权限,请你清除缓存,重新到用户权限表中获取新的权限的意思。

说了上面这么一些,有人就要问了,我该怎么知道现在某个用户有什么权限呢?Good question!这个问题也困扰了菜鸟级的我,后来才发现,应该使用的是SHOW GRANTS语句,语法如下:

SHOW GRANTS FOR user;

user就是你要查看权限的用户,如果你不使用@host的方式,默认host是%。如果要查看当前登录用户的权限你就可以使用下面这些语句中的任意一个了:

code

而如果你是要查看当前系统下,所有用户的权限分配情况,怎么处理呢?可以试试下面的语句:

code

; SHOW GRANTS 语法示例

怎么样,所有的用户权限都出来了吧。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值