MySQL 的 GRANT和REVOKE 命令
MySQL 的 GRANT和REVOKE 命令
GRANT - 授权
将指定
操作对象
的指定操作权限
授予指定的用户
; 发出该 GRANT语句的可以是数据库管理员,也可以是该数据库对象的创建者;
查询
查看用户自己权限
SHOW GRANTS;
查看其他用户权限
SHOW GRANTS FOR 'user'@'host';
Tips: host 可以使用通配符
%
;如 'user'@'%', 'user'@'192.168.0.%';授权
语法
GRANT 权限 ON 数据库对象 TO 用户 [WITH GRANT OPTION];
栗子
授予 super用户所有权限
GRANT ALL [PRIVILEGES] ON . TO 'user'@'%';
授予用户 INSERT 权限
CREATE INSERT ON db_name.* TO 'user'@'%' IDENTIFIED BY 'newpasswd';
授予用户 SELECT, UPDATE, DELETE 权限
GRANT SELECT, UPDATE, DELETE ON db_name.* TO 'user'@'localhost'
刷新
FLUSH PRIVILEGES;
Tips:
WITH GRANT OPTION
: 表示是否能传播其权限;(授权命令是由数据库管理员使用的)- 指定
WITH GRANT OPTION
,则获得该权限的用户可以把这种权限授予其他用户;但不允许循环传授,即被授权者不能把权限在授回给授权者或祖先; - 未指定,则获得某种权限的用户只能自己使用该权限,不能传播该权限;
- 指定
- 在
GRANT
关键字之后指定一个或多个
特权。如果要授予用户多个权限,则每个权限都将以逗号
分隔(见下表中的特权列表); - 指定确定特权应用级别的privilege_level;
- MySQL支持全局(
*.*
),数据库(database.*
),表(database.table
)和列级别; - 如果您使用列权限级别,则必须在每个权限之后使用
逗号
分隔列的列表;
- MySQL支持全局(
- 如果授予权限的用户已经存在,则GRANT语句修改其特权; 如不存在,则GRANT语句将创建一个新用户; 可选的条件
IDENTIFIED BY
允许为用户设置新密码;
REVOKE - 回收授权
语法
REVOKE 权限 ON 数据库对象 FROM 用户 [CASCADE | RESTRICT];
栗子
回收全部权限
REVOKE ALL [PRIVILEGES] ON . FROM 'user'@'%';
回收 INSERT 权限
REVOKE INSERT ON db_name.* FROM 'user'@'%';
Tips:
CASCADE | RESTRICT
当检测到关联的特权时,RESTRICT(默认值) 导致REVOKE失败;CASCADE
可以回收所有这些关联的特权;(如U1授权U2, U2授权U3,此时使用级联(CASCADE)收回了U2和U3的权限,否则系统将拒绝执行该命令)
GRANT允许的特权
下表说明了可用于GRANT和REVOKE语句的所有可用权限:
权限 含义 全局 数据库 表 列 过程 代理 ALL [PRIVILEGES]
授予除了grant option之外的指定访问级别的所有权限 ALTER
允许用户使用alter table语句 X X X ALTER ROUTINE
允许用户更改或删除存储程序, 可以使用{alter | drop} {procedure | unction} X X X CREATE
允许用户创建数据库和表 X X X CREATE ROUTINE
可以使用{create | alter | drop} {procedure | function} X CREATE TABLESPACE
允许用户创建,更改或删除表空间和日志文件组 X CREATE TEMPORARY TABLES
允许用户使用create temporary table创建临时表 X X CREATE USER
允许用户使用create user,drop user,rename user和revoke all privileges语句 X CREATE VIEW
允许用户创建或修改视图 X X X DELETE
允许用户使用delete X X X DROP
允许用户删除数据库,表和视图 X X X EVENT
能够使用事件计划的事件 X X EXECUTE
允许用户执行存储过程/存储函数 X X FILE
允许用户读取数据库目录中的任何文件 X GRANT OPTION
允许用户有权授予或撤销其他帐户的权限 X X X X X INDEX
允许用户创建或删除索引 X X X INSERT
允许用户使用insert语句 X X X X LOCK TABLES
允许用户在具有select权限的表上使用lock tables X X PROCESS
允许用户使用show processlist语句查看所有进程 X PROXY
启用用户代理 REFERENCES
允许用户创建外键 X X X X RELOAD
允许用户使用flush操作 X REPLICATION CLIENT
允许用户查询主服务器或从服务器的位置 X REPLICATION SLAVE
允许用户使用复制从站从主机读取二进制日志事件 X SELECT
允许用户使用select语句 X X X X SHOW DATABASES
允许用户显示所有数据库 X SHOW VIEW
允许用户使用show create view语句 X X X SHUTDOWN
允许用户使用mysqladmin shutdown命令 X SUPER
允许用户使用其他管理操作,如change master to,kill,purge binary logs,set global和mysqladmin命令 X TRIGGER
允许用户使用trigger操作 X X X UPDATE
允许用户使用update语句 X X X X USAGE
连接(登陆)权限(默认授予且不能被回收)
实例
用户操作
创建用户
CREATE USER 'user'@'%' IDENTIFIED BY 'newpasswd';
重命名用户
CREATE USER 'old_user'@'%' TO 'new_user'@'%';
删除用户
查询用户
SELECT user,host FROM mysql.user;
删除用户
DROP USER 'user'@'host';
查看和刷新权限
查看权限
SHOW GRANTS [FOR 'user'@'host'];
刷新权限
FLUSH PRIVILEGES;
授权与取消授权
用法
GRANT 权限 ON 数据库对象 TO 用户 [WITH GRANT OPTION]; -- 授权
REVOKE 权限 ON 数据库对象 FROM 用户 [CASCADE | RESTRICT]; -- 取消授权
Tips: REVOKE 跟 GRANT 的语法差不多,只需要把关键字
TO
换成FROM
即可栗子
添加权限(和已有权限合并,不会覆盖已有权限)
-- 添加普通数据用户,查询、插入、更新、删除 数据库中所有表数据的权利
grant select, insert, update, delete on testdb.* to common_user@'%' -- 添加数据库开发人员,创建表、索引、视图、存储过程、函数。。。等权限
grant create, alter, drop on testdb.* to developer@'192.168.0.%'; -- 添加操作 MySQL 外键权限
grant references on testdb.* to developer@'192.168.0.%'; -- 添加操作 MySQL 临时表权限
grant create temporary tables on testdb.* to developer@'192.168.0.%'; -- 添加操作 MySQL 索引权限
grant index on testdb.* to developer@'192.168.0.%'; -- 添加操作 MySQL 视图、查看视图源代码 权限
grant create, show view on testdb.* to developer@'192.168.0.%';
删除授权
-- 删除普通数据用户,查询、插入、更新、删除 数据库中所有表数据的权利
revoke select, insert, update, delete on testdb.* from common_user@'%' -- 删除数据库开发人员,创建表、索引、视图、存储过程、函数。。。等权限
revoke create, alter, drop on testdb.* from developer@'192.168.0.%'; -- 删除操作 MySQL 外键权限
revoke references on testdb.* from developer@'192.168.0.%'; -- 删除操作 MySQL 临时表权限
revoke create temporary tables on testdb.* from developer@'192.168.0.%'; -- 删除操作 MySQL 索引权限
revoke index on testdb.* from developer@'192.168.0.%'; -- 删除操作 MySQL 视图、查看视图源代码 权限
revoke create, show view on testdb.* from developer@'192.168.0.%';
DBA 权限管理
-- 普通 DBA 管理某个 MySQL 数据库的权限
grant all [privileges] on testdb to dba@'localhost' -- 高级 DBA 管理 MySQL 中所有数据库的权限。
grant all on *.* to dba@'localhost'
细密度授权
-- 作用在整个 MySQL 服务器上
grant select on *.* to dba@localhost; -- dba 可以查询 MySQL 中所有数据库中的表
grant all on *.* to dba@localhost; -- dba 可以管理 MySQL 中的所有数据库 -- 作用在单个数据库上
grant select on testdb.* to dba@localhost; -- dba 可以查询 testdb 中的表。 -- 作用在单个数据表上
grant select, insert, update, delete on testdb.t_orders to dba@localhost; -- 作用在表中的列上
grant select(id, username, sex) on testdb.t_user to dba@localhost;
权限传播与收回
-- 授权 dba 查询权限,并且可以将这些权限 grant 给其他用户
grant select on testdb.* to dba@localhost with grant option; -- 收回 dba 和其传播用户的权限
revoke select on testdb.* from dba@localhost cascade;
Tips: 权限发生改变后, 需要重新加载一下权限,将权限信息从内存中写入数据库;
Reference
MySQL 的 GRANT和REVOKE 命令的更多相关文章
- MySQL的grant,revoke使用
MySQL 赋予用户权限命令的简单格式可概括为: grant 权限 on 数据库对象 to 用户 一.grant 普通数据用户,查询.插入.更新.删除 数据库中所有表数据的权利. grant sele ...
- MySQL的Grant命令[转]
本文实例,运行于 MySQL 5.0 及以上版本. MySQL 赋予用户权限命令的简单格式可概括为: grant 权限 on 数据库对象 to 用户 一.grant 普通数据用户,查询.插入.更新.删 ...
- mysql grant ,User,revoke
mysql的权限一直都都是很关心的重点,我知道的也只是很少的一部分,对于每个数据库我习惯创建一个一个用户,该用户只对自己从属的数据库产生进行操作,在一部分的程度上可以保护自己的数据库, 比如我有一个数 ...
- [MySQL] - MySQL的Grant命令
本文实例,运行于 MySQL 5.0 及以上版本. MySQL 赋予用户权限命令的简单格式可概括为: grant 权限 on 数据库对象 to 用户 一.grant 普通数据用户,查询.插入.更新.删 ...
- MySQL的Grant命令
来源:http://yingxiong.javaeye.com/blog/451208 本文实例,运行于 MySQL 5.0 及以上版本. MySQL 赋予用户权限命令的简单格式可概括为: gra ...
- (转)MySQL的Grant命令
[MySQL] - MySQL的Grant命令 来源:http://yingxiong.javaeye.com/blog/451208 本文实例,运行于 MySQL 5.0 及以上版本. MySQL ...
- MySQL的GRANT命令(创建用户)
本文实例,运行于 MySQL 5.0 及以上版本. MySQL 赋予用户权限命令的简单格式可概括为: grant 权限 on 数据库对象 to 用户 (删除用户与删除权限:drop user '用户名 ...
- MySQL数据库grant授权命令
MySQL数据库grant授权命令 制作人:全心全意 grant授权命令的使用 grant授权命令使用语法: grant 权限 on 数据库对象 to 用户 grant 权限 on 数据库对象 to ...
- mysql数据库备份与还原命令
还原一个数据库:mysql -h localhost -u root -p123456 www 备份一个数据库:mysqldump -h localhost -u root -p123456 www ...
随机推荐
- 如何在vscode中编写.net core 项目(vscode)
1.下载拓展 .NET Core Extension Pack (作者:保哥) 这个里面将需要的插件都打包了小白一键下载就好了 2.下载扩展 vscode-solution-explorer ...
- 什么是 rabbitmq?
采用 AMQP 高级消息队列协议的一种消息队列技术,最大的特点就是消费并不需要确保提供方存在,实现了服务之间的高度解耦
- springboot使用redis实现发布与订阅
配置redis连接地址 # Redis服务器地址 spring.redis.host=youxiu326.xin # Redis服务器连接端口 spring.redis.port=6379 # Red ...
- Python turtle 模块可以编写游戏,是真的吗?
1. 前言 turtle (小海龟) 是 Python 内置的一个绘图模块,其实它不仅可以用来绘图,还可以制作简单的小游戏,甚至可以当成简易的 GUI 模块,编写简单的 GUI 程序. 本文使用 tu ...
- 【代码开源】GreaterWMS 抖音SDK调用教程
应用介绍 GreaterWMS 抖音SDK调用教程 SDK具体功能: 1,一仓多店,多仓多店 2,库存同步,商品同步 3,快递发货,物流轨迹 4,订单拦截 5,字节云仓 6,精选联盟 7,供应分销 8 ...
- 运筹学之"简单平均预测法"和"加权滑动平均预测法"和"确定平滑系数"
1.简单滑动平均预测法就是将所有的售价加起来除以总数 665/5=133 2.加权滑动平均预测法:需要将售价分别乘以权之和,并除以权之和 1771/13≈136.23 二.某木材公司销售房架构件,其中 ...
- Vue报错之"[Vue warn]: Invalid prop: type check failed for prop "jingzinum". Expected Number with value NaN, got String with value "fuNum"."
一.报错截图 [Vue warn]: Invalid prop: type check failed for prop "jingzinum". Expected Number w ...
- Numpy中重要的广播概念
Numpy中重要的广播概念 广播:简单理解为用于不同大小数组的二元通用函数(加.减.乘等)的一组规则 广播的规则: 如果两个数组的维度数dim不相同,那么小维度数组的形状将会在左边补1 如果shape ...
- matlab拟合函数的三种方法
方法一:多项式拟合polyfit 1 x=[1 2 3 4 5 6 7 8 9]; 2 3 y=[9 7 6 3 -1 2 5 7 20]; 4 P= polyfit(x, y, 3) %三阶多项式拟 ...
- numpy入门—numpy是什么
numpy是什么?为什么使用numpy 使用numpy库与原生python用于数组计算性能对比