您当前的位置:首页 > 电脑百科 > 数据库 > MYSQL

Mysql 权限管理

时间:2020-11-23 12:54:16  来源:  作者:

前言

为了避免删库跑路的事情,权限管理和数据备份是必要。

机器环境

Mysql 权限管理

Mysql 8.0 可以创建角色,然后将操作数据库、表、索引等的权限赋予给角色,将将角色赋予给用户,也是我们熟悉的 RBAC 模型。

当然也可以将权限直接授予用户。

用户

创建用户

-- 用户名称是由 用户名和登录用户的 ip 一同组成的,% 代表任意 ip 
CREATE USER 'db_dev'@'localhost' IDENTIFIED BY 'Mysql@12345678';

修改用户密码

-- 修改用户密码
ALTER USER 'test'@'localhost' IDENTIFIED BY 'password';

锁定用户

-- 锁定用户不能登录
ALTER USER 'db_dev1'@'localhost' ACCOUNT LOCK;

-- 解锁
ALTER USER 'db_dev1'@'localhost' ACCOUNT UNLOCK;

权限

用户的权限信息保存在 information_schema.USER_PRIVILEGES 。也可以在 mysql.user 看到授权信息。

为了避免已经建立的链接的权限无法刷新,需要搭建数据库的时候,权限就要设计好。

有部分权限是可以动态修改的,但是有的权限,在一个会话中是不能修改的。为了避免问题,需要数据库使用之前就要做好权限规划。

权限说明

grant 用法

权限 说明
ALL 所有的权限,除了 GRANT OPTION and PROXY.
ALTER 修改表结构,ALTER TABLE
CREATE 创建数据库和表
DROP 删除数据库、表、视图
GRANT OPTION GRANT权限允许你把你自己拥有的那些权限授给其他的用户。可以用于数据库、表和保存的程序。
DELETE 删除表数据
INDEX INDEX权限允许你创建或删除索引。
INSERT 插入表数据
SELECT 查询表数据
UPDATE 更新表数据
PROCESS show processlist 命令显示在服务器内执行的线程的信息(即其它账户相关的客户端执行的语句)。
SHOW VIEW 查看视图
SHOW DATABASES 查看数据库列表,没有授予这个权限,只能查看到 information_schema
LOCK TABLES 锁表
RELOAD FLUSH 相关的操作
CREATE TABLESPACE 允许使用操作表空间和日志的语句,比如创建,删除,修改
CREATE TEMPORARY TABLES 创建临时表

授权

-- 对从 localhost 登录的用户 db_dev 的数据库:ceshi 中所有表(*) 授予 SHOW DATABASES,SELECT,RELOAD 权限
GRANT SHOW DATABASES,SELECT,RELOAD ON ceshi.* TO 'db_dev'@'localhost';

-- 也可以针对某个表授权,`` 是为了处理关键字,当没有关键字可以 ceshi.test1 就可以
GRANT SELECT ON ceshi.`test1` TO 'db_dev'@'localhost';

-- 刷新权限信息,有的权限是可以动态加载的。为了避免权限出题,每次都执行这个语句
FLUSH PRIVILEGES;

回收权限

-- ON 指定数据库.表 
-- FROM 指定用户
REVOKE SHOW DATABASES,SELECT ON *.* FROM 'db_dev'@'localhost';
-- 刷新权限信息
FLUSH PRIVILEGES;

角色

使用数据库的人员可能有,开发,DBA,运营相关(只会查询数据),程序运行。

角色激活

给用户赋予角色之后,角色默认不激活的。用户可以在会话中激活用户赋予的角色。

也可以设置参数,让所有角色都激活,这样用户登录成功,赋予的角色全选就可以使用了

-- 查看当前用户下使用了哪些角色
SELECT CURRENT_ROLE();

-- 登录之后激活定义的所有角色,给用户赋予哪些角色,就可以使用这些角色的权限
SET global activate_all_roles_on_login=ON;

-- 在会话中修改激活哪些角色
SET ROLE ops;

创建及删除角色

-- 开发(dev),db(db),运营(ops),程序运行(App_run)
CREATE ROLE 'app_run', 'db', 'ops', 'dev';

-- 删除角色
DROP ROLE 'db', 'app_run';

给角色分配权限

  • 开发

开发一般会,创建数据库和表,crud,操作索引,修改表结构

drop 权限我建议不要给

-- crud,创建
GRANT SELECT, INSERT, UPDATE, DELETE,CREATE,CREATE VIEW,ALTER,SHOW DATABASES,SHOW VIEW,ALTER,INDEX,PROCESS,RELOAD,LOCK TABLES ON *.* TO 'dev';
  • db

db 一般拥有所有权限

-- WITH GRANT OPTION 是拥有给用户授权的权限
GRANT ALL PRIVILEGES ON *.* TO 'db' WITH GRANT OPTION;
  • 运营相关

基本都是查询语句

-- 或者指定某个具体数据库,或者表
GRANT SELECT,SHOW DATABASES,SHOW VIEW ON *.* TO 'ops';
  • 程序运行相关

为了使用 flyway 这种可以修改表结构和索引的组件。对权限赋予 CREATE,INDEX,ALTER.

DELETE 语句不要怕,现在 mybatis plus 类似的组件,都带有安全删除的校验,全表删除或者全表更新必须带条件。在一定程度上避免删除表中所有数据。

GRANT SELECT, INSERT, UPDATE, DELETE,CREATE,CREATE VIEW,SHOW DATABASES,SHOW VIEW,ALTER,INDEX,RELOAD,LOCK TABLES,CREATE TEMPORARY TABLES ON *.* TO 'app_run';

给用户赋予角色

-- 给用户赋予 ops 角色
GRANT 'ops' TO 'db_dev'@'localhost';

撤销角色或者角色的权限

-- 从用户撤销某个角色
REVOKE ops FROM db_dev1@localhost;

-- 从角色中撤销某个权限
REVOKE SHOW VIEW ON *.* FROM 'ops';

-- 刷新权限
FLUSH PRIVILEGES;

查询用户的权限

-- 显示来自 localhost 登录的 test 用户
SHOW GRANTS FOR 'test'@'localhost';
SHOW GRANTS FOR 'root'@'%';

-- 来自某个角色 USEING 指定的角色的权限
SHOW GRANTS FOR 'read_user1'@'localhost' USING 'ops';

本文由 张攀钦的博客 http://www.mflyyou.cn/ 创作。 可自由转载、引用,但需署名作者且注明文章出处。



Tags:Mysql   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
作者:雷文霆 爱可生华东交付服务部 DBA 成员,主要负责Mysql故障处理及相关技术支持。爱好看书,电影。座右铭,每一个不曾起舞的日子,都是对生命的辜负。 本文来源:原创投稿 *爱可生...【详细内容】
2021-12-24  Tags: Mysql  点击:(6)  评论:(0)  加入收藏
一、为什么要搭建主从架构呢1.数据安全,可以进行数据的备份。2.读写分离,大部分的业务系统来说都是读数据多,写数据少,当访问压力过大时,可以把读请求给到从服务器。从而缓解数据...【详细内容】
2021-12-15  Tags: Mysql  点击:(10)  评论:(0)  加入收藏
生成间隙(gap)锁、临键(next-key)锁的前提条件 是在 RR 隔离级别下。有关Mysql记录锁、间隙(gap)锁、临键锁(next-key)锁的一些理论知识之前有写过,详细内容可以看这篇文章...【详细内容】
2021-12-14  Tags: Mysql  点击:(17)  评论:(0)  加入收藏
binlog 基本认识 MySQL的二进制日志可以说是MySQL最重要的日志了,它记录了所有的DDL和DML(除了数据查询语句)语句,以事件形式记录,还包含语句所执行的消耗的时间,MySQL的二...【详细内容】
2021-12-14  Tags: Mysql  点击:(13)  评论:(0)  加入收藏
为查询优化你的查询 大多数的MySQL服务器都开启了查询缓存。这是提高性最有效的方法之一,而且这是被MySQL的数据库引擎处理的。当有很多相同的查询被执行了多次的时候,这些查...【详细内容】
2021-12-09  Tags: Mysql  点击:(15)  评论:(0)  加入收藏
测试的目的和原因,公司有很多程序员,每个程序员对数据库和表结构都有自己的理解。而且每个程序员的理解往往是以效率考虑。既然都是为了效率考虑,那么我就来测试一下究竟哪种使...【详细内容】
2021-12-08  Tags: Mysql  点击:(14)  评论:(0)  加入收藏
当你们考虑项目并发的时候,我在部署环境,当你们在纠结使用ArrayList还是LinkedArrayList的时候,我还是在部署环境。所以啊,技术不止境,我在部环境。今天这篇文章缕一下在同一台服...【详细内容】
2021-12-08  Tags: Mysql  点击:(16)  评论:(0)  加入收藏
对于数据分析来说,MySQL使用最多的是查询,比如对数据进行排序、分组、去重、汇总及字符串匹配等,如果查询的数据涉及多个表,还需要要对表进行连接,本文就来说说MySQL中常用的查询...【详细内容】
2021-12-06  Tags: Mysql  点击:(20)  评论:(0)  加入收藏
在学习SQL语句之前,首先需要区分几个概念,我们常说的数据库是指数据库软件,例如MySQL、Oracle、SQL Server等,而本文提到的数据库是指数据库软件中的一个个用于存储数据的容器。...【详细内容】
2021-11-24  Tags: Mysql  点击:(23)  评论:(0)  加入收藏
概述以前参加过一个库存系统,由于其业务复杂性,搞了很多个应用来支撑。这样的话一份库存数据就有可能同时有多个应用来修改库存数据。比如说,有定时任务域xx.cron,和SystemA域...【详细内容】
2021-11-05  Tags: Mysql  点击:(31)  评论:(0)  加入收藏
▌简易百科推荐
作者:雷文霆 爱可生华东交付服务部 DBA 成员,主要负责Mysql故障处理及相关技术支持。爱好看书,电影。座右铭,每一个不曾起舞的日子,都是对生命的辜负。 本文来源:原创投稿 *爱可生...【详细内容】
2021-12-24  爱可生    Tags:MySQL   点击:(6)  评论:(0)  加入收藏
生成间隙(gap)锁、临键(next-key)锁的前提条件 是在 RR 隔离级别下。有关Mysql记录锁、间隙(gap)锁、临键锁(next-key)锁的一些理论知识之前有写过,详细内容可以看这篇文章...【详细内容】
2021-12-14  python数据分析    Tags:MySQL记录锁   点击:(17)  评论:(0)  加入收藏
binlog 基本认识 MySQL的二进制日志可以说是MySQL最重要的日志了,它记录了所有的DDL和DML(除了数据查询语句)语句,以事件形式记录,还包含语句所执行的消耗的时间,MySQL的二...【详细内容】
2021-12-14  linux上的码农    Tags:mysql   点击:(13)  评论:(0)  加入收藏
为查询优化你的查询 大多数的MySQL服务器都开启了查询缓存。这是提高性最有效的方法之一,而且这是被MySQL的数据库引擎处理的。当有很多相同的查询被执行了多次的时候,这些查...【详细内容】
2021-12-09  元宇宙iwemeta    Tags:mysql   点击:(15)  评论:(0)  加入收藏
测试的目的和原因,公司有很多程序员,每个程序员对数据库和表结构都有自己的理解。而且每个程序员的理解往往是以效率考虑。既然都是为了效率考虑,那么我就来测试一下究竟哪种使...【详细内容】
2021-12-08  吴彬的分享    Tags:Mysql数据库   点击:(14)  评论:(0)  加入收藏
当你们考虑项目并发的时候,我在部署环境,当你们在纠结使用ArrayList还是LinkedArrayList的时候,我还是在部署环境。所以啊,技术不止境,我在部环境。今天这篇文章缕一下在同一台服...【详细内容】
2021-12-08  秃头码哥    Tags:MySQL数据库   点击:(16)  评论:(0)  加入收藏
对于数据分析来说,MySQL使用最多的是查询,比如对数据进行排序、分组、去重、汇总及字符串匹配等,如果查询的数据涉及多个表,还需要要对表进行连接,本文就来说说MySQL中常用的查询...【详细内容】
2021-12-06  笨鸟学数据分析    Tags:MySQL   点击:(20)  评论:(0)  加入收藏
在学习SQL语句之前,首先需要区分几个概念,我们常说的数据库是指数据库软件,例如MySQL、Oracle、SQL Server等,而本文提到的数据库是指数据库软件中的一个个用于存储数据的容器。...【详细内容】
2021-11-24  笨鸟学数据分析    Tags:SQL语句   点击:(23)  评论:(0)  加入收藏
概述以前参加过一个库存系统,由于其业务复杂性,搞了很多个应用来支撑。这样的话一份库存数据就有可能同时有多个应用来修改库存数据。比如说,有定时任务域xx.cron,和SystemA域...【详细内容】
2021-11-05  Java云海    Tags:分布式锁   点击:(31)  评论:(0)  加入收藏
MySQL的进阶查询 一、 按关键字排序 使用ORDERBY语句来实现排序排序可针对一个或多个字段ASC:升序,默认排序方式 【升序是从小到大】DESC:降序 【降序是从大到小】ORDER BY的...【详细内容】
2021-11-05  Java热点    Tags:SQL语句   点击:(27)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条