MySQL8权限,角色

角色

  • 创建角色
  • 给角色赋予权限
  • 删除权限
  • 给用户赋予角色
  • 激活角色
  • 撤销用户权限

创建角色

mysql> create role boss;
Query OK, 0 rows affected (0.01 sec)mysql> create role manager;
Query OK, 0 rows affected (0.01 sec)

给角色赋予权限

manager角色拥有查询sales表的权限

mysql> grant select on `study-test01`.sales to manager@'%';
Query OK, 0 rows affected (0.01 sec)mysql> show grants for manager;
+---------------------------------------------------------+
| Grants for manager@%                                    |
+---------------------------------------------------------+
| GRANT USAGE ON *.* TO `manager`@`%`                     |
| GRANT SELECT ON `study-test01`.`sales` TO `manager`@`%` |
+---------------------------------------------------------+
2 rows in set (0.00 sec)

usage 表示连接并登录数据库的权限,这个是MySQL默认的权限。只要是root创建的用户和角色都有。

删除权限


mysql> drop role tmp_role@'localhost';
Query OK, 0 rows affected (0.01 sec)

给用户赋予角色

mysql> create user sam;
Query OK, 0 rows affected (0.01 sec)mysql> select user, host, grant_priv from mysql.user;
+------------------+-----------+------------+
| user             | host      | grant_priv |
+------------------+-----------+------------+
| boss             | %         | N          |
| manager          | %         | N          |
| sam              | %         | N          |
| mysql.infoschema | localhost | N          |
| mysql.session    | localhost | N          |
| mysql.sys        | localhost | N          |
| root             | localhost | Y          |
+------------------+-----------+------------+
7 rows in set (0.00 sec)mysql> show grants for sam;
+---------------------------------+
| Grants for sam@%                |
+---------------------------------+
| GRANT USAGE ON *.* TO `sam`@`%` |
+---------------------------------+
1 row in set (0.00 sec)mysql> grant manager to sam@'%';
Query OK, 0 rows affected (0.00 sec)mysql> show grants for sam;
+----------------------------------+
| Grants for sam@%                 |
+----------------------------------+
| GRANT USAGE ON *.* TO `sam`@`%`  |
| GRANT `manager`@`%` TO `sam`@`%` |
+----------------------------------+
2 rows in set (0.00 sec)mysql> alter user sam identified by '123';
Query OK, 0 rows affected (0.01 sec)

给用户赋予了角色,还需要手动激活角色。用户才能拥有角色对应的权限。

激活角色

手动激活用户的角色

mysql> SET DEFAULT ROLE ALL TO sam@'%';
Query OK, 0 rows affected (0.01 sec)

永久激活

mysql> show variables like 'activate_all_roles_on_login';
+-----------------------------+-------+
| Variable_name               | Value |
+-----------------------------+-------+
| activate_all_roles_on_login | OFF   |
+-----------------------------+-------+
1 row in set (0.00 sec)SET GLOBAL activate_all_roles_on_login=ON;

这样给用户赋予角色了,就有了对应的权限了。

使用用户sam操作数据库。


mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| study-test01       |
+--------------------+
2 rows in set (0.01 sec)mysql> use `study-test01`;
Database changed
mysql> show tables;
+------------------------+
| Tables_in_study-test01 |
+------------------------+
| sales                  |
+------------------------+
1 row in set (0.00 sec)mysql> select * from sales;
+----+-----------+--------------+-------------+
| id | city      | county       | sales_value |
+----+-----------+--------------+-------------+
|  1 | 北京市    | 朝阳区       |          10 |
|  2 | 北京市    | 海定区       |          20 |
|  3 | 上海市    | 浦东新区     |          30 |
|  4 | 上海市    | 徐汇区       |          40 |
+----+-----------+--------------+-------------+
4 rows in set (0.00 sec)mysql> delete from sales where id = 1;
ERROR 1142 (42000): DELETE command denied to user 'sam'@'localhost' for table 'sales'
mysql> update sales set city = 'hh' where id = 1;
ERROR 1142 (42000): UPDATE command denied to user 'sam'@'localhost' for table 'sales'
mysql> insert into sales values (1, 'a', 'b', 99);
ERROR 1142 (42000): INSERT command denied to user 'sam'@'localhost' for table 'sales'

可以看到sam只有查询sales表的权限。

撤销用户权限

REVOKE boss FROM user;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/420280.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

前端学习(1342):mongoose验证规则拿到错误信息

const mongoose require(mongoose); mongoose.connect(mongodb://localhost/playground, { useUnifiedTopology: true }).then(() > console.log(数据库连接成功)).catch(err > console.log(err, 数据库连接失败))//创建集合规则 const postSchema new mongoose.Schema…

单片机人流统计装置的程序_单片机其实不难

对于大学读电子方面专业的同学们,肯定知道有这么一个神奇的元器件,它枯燥难懂,但也十分吸引人,它就是我们今天要讲的元器件--单片机单片机作为工业控制领域里面最核心的部件,它存在于每一台机器,小到扫地机…

数据库索引的作用和长处缺点

为什么要创建索引呢?这是由于,创建索引能够大大提高系统的性能。 第一,通过创建唯一性索引,能够保证数据库表中每一行数据的唯一性。 第二,能够大大加快 数据的检索速度,这也是创建索引的最基本的原因。 第…

MySQL索引篇

index存储引擎索引InnoDB中的索引MyISAM索引存储引擎 以前一直认为关系型数据库中的索引不重要,知道最近学了MySQL高级篇,才发现,对MySQL一知半解。都是听人泛泛而谈。 首先MySQL服务器是怎么存数据的,怎么取到的,内…

sublime加入input函数_【挑战自学Python编程】第八天:while循环以及input()函数

摘要01 while循环02 input函数03 终端04 使用while循环与input()函数01 while循环在正式讲Python中的while前,希望大家先关注单词一下while,翻译为中文意思是:当。(这里我们只需要这一种意思即可)下面我们开始看while循…

文件循环读取_一个案例轻松认识Python文件处理提取文件中的数字

1、文件打开使用 open() 函数打开文件。它需要两个参数,第一个参数是文件路径或文件名,第二个是文件的打开模式。模式通常是下面这样的:"r",以只读模式打开,你只能读取文件但不能编辑/删除文件的任何内容&qu…

B/S架构

程序架构 tomcat目录结构: bin:存放启动和关闭tomcat的脚本文件; conf:存放配置文件 lib:存放所需的jar文件 webapps:存放发布的web程序 work:存入tomcat工作时产生的文件 1.tomcat配置端口,当默认的8080端口被占用时修改8080端口的位置在tom…

前端学习(1344):用户的增删改查操作1

const http require(http); const mongoose require(mongoose);//数据库连接 mongoose.connect(mongodb://localhost/playground, { useUnifiedTopology: true }).then(() > console.log(数据库连接成功)).catch(() > console.log(数据库连接失败));const userSchema …

索引常用注意事项

索引1. 索引怎么建好?2. 索引容易失效的场景3. 连接查询索引优化4. order by,group by5. 覆盖索引6. 索引下推1. 索引怎么建好? 单表 主键必须唯一,且单调递增有唯一键的,尽量建立唯一键where条件用得比较多的字段查询…

EntityFramework的安装

关于EntityFramework在vs2012无法引用的问题 这段时间学习MVC,发现一个问题,我公司的电脑可以直接引用EntityFrameWork这个命名空间,但我家里面的电脑就不能直接引用,刚开始以为是我电脑配置问题,后重装电脑&#xff0…

毫米波雷达_最新的7个毫米波雷达应用案例

毫米波雷达传感器如何做到"全天候"?毫米波雷达使用的技术是毫米波(millimeterwave),通常缩写为MMW,波长为1~10毫米,频率为30~300GHz的电磁波。根据波的传播理论,频率越高,波长越短&am…

前端学习(1345):用户的增删改查操作2

//创建http连接 const http require(http); //创建服务器 const app http.createServer(); //第三方模块导入 const mongoose require(mongoose); //获取连接 const url require(url); //数据库连接地址 mongoose.connect(mongodb://localhost/playground, { useUnifiedTop…

太阳光是平行光吗_“彩虹的形成是因为光的色散和光沿直线传播是一回事吗?”...

-1感谢某不愿透露姓名的高中同学提供支持。0请先解释一下你的这个问题提法可能的歧义:究竟是“是因为”后面的词语组成一个整体,还是“和”前面的词语组成一个整体呢?不讲清楚的话,答案会有一些差距。1“彩虹的形成是因为光的色散…

力扣刷题【20,21,26,27,35】

-20 有效的括号21 合并两个有序链表26 删除数组中的重复项27. 移除元素35. 搜索插入位置20 有效的括号 使用replace一直替换 package top.lel.lc.easy.valid_parentheses;import java.util.Deque; import java.util.HashMap; import java.util.LinkedList; import java.util.…

前端学习(1346):用户的增删改查操作3增加

//创建http连接 const http require(http); //创建服务器 const app http.createServer(); //第三方模块导入 const mongoose require(mongoose); //获取连接 const url require(url); // const querystring require(querystring); //数据库连接地址 mongoose.connect(mon…

【leetcode】Intersection of Two Linked Lists

Intersection of Two Linked Lists Write a program to find the node at which the intersection of two singly linked lists begins. For example, the following two linked lists: A: a1 → a2↘c1 → c2 → c3↗ B: b1 → b2 → b3begin to int…

闪电shader_【Shader案例】怎样做出自然的闪电

(本次案例的效果)最近下载了一套特效,其中一个关于闪电制作的shader想法特别聪明,这里特地附上原代码,并教你怎么把源代码转换成连连看,下面开始正文。这是原本shader定义的属性:_TintColor(闪电的颜色)_MainTex(一张R…

MySQL8数据恢复

binlog数据恢复恢复流程恢复流程 先登录MySQL flush log flush log这样会在MySQL binglog日志目录重新生成二进制文件 查看日志文件名 binlog.000033是我刚生成的日志,现在操作的是binlog.000032这个文件。相当于备份了下。 基于位置恢复(先查看位置…

前端学习(1347):用户的增删改查操作4修改

//创建http连接 const http require(http); //创建服务器 const app http.createServer(); //第三方模块导入 const mongoose require(mongoose); //获取连接 const url require(url); // const querystring require(querystring); //数据库连接地址 mongoose.connect(mon…