【数据库】MySQL视图 | 用户管理

文章目录

  • 1 :peach:视图:peach:
    • 1.1 :apple:基本使用:apple:
      • 1.1.1 :lemon:创建视图:lemon:
      • 1.1.2 :lemon:案例:lemon:
      • 1.1.3 :lemon:删除视图:lemon:
    • 1.2 :apple:视图规则和限制:apple:
  • 2 :peach:用户管理:peach:
    • 2.1 :apple:用户信息:apple:
    • 2.2 :apple:创建用户:apple:
    • 2.3 :apple:删除用户:apple:
    • 2.4 :apple:修改用户密码:apple:
    • 2.5 :apple:数据库的权限:apple:
      • 2.5.1 :lemon:给用户授权:lemon:
      • 2.5.2 :lemon:回收权限:lemon:


1 🍑视图🍑

视图是一个虚拟表,其内容由查询定义。同真实的表一样,视图包含一系列带有名称的列和行数据。视图的数据变化会影响到基表,基表的数据变化也会影响到视图

1.1 🍎基本使用🍎

1.1.1 🍋创建视图🍋

create view 视图名 as select语句

1.1.2 🍋案例🍋

create view v_ename_dname as select ename, dname
from EMP, DEPT where EMP.deptno=DEPT.deptno;

查看v_ename_dname

select * from v_ename_dname order by dname;
+--------+------------+
| ename | dname |
+--------+------------+
| CLARK | ACCOUNTING |
| KING | ACCOUNTING |
| MILLER | ACCOUNTING |
| SMITH | RESEARCH |
| JONES | RESEARCH |
| SCOTT | RESEARCH |
| ADAMS | RESEARCH |
| FORD | RESEARCH |
| ALLEN | SALES |
| WARD | SALES |
| MARTIN | SALES |
| BLAKE | SALES |
| TURNER | SALES |
| JAMES | SALES |
+--------+------------+

修改了视图,对基表数据有影响:

select emp.ename,dept.dname,dept.deptno from emp,dept where
emp.deptno=dept.deptno order by dname;
update v_ename_dname set ename='TEST' where ename='CLARK';
select * from EMP where ename='CLARK';
select * from EMP where ename='TEST';

修改了基表,对视图有影响:

mysql> update EMP set deptno=10 where ename='JAMES'; -- 修改基表
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0
mysql> select * from v_ename_dname where ename='JAMES';
+-------+----------+
| ename | dname |
+-------+----------+
| JAMES | RESEARCH | <== 视图中的数据也发生了变化
+-------+----------+

1.1.3 🍋删除视图🍋

drop view 视图名

1.2 🍎视图规则和限制🍎

  • 与表一样,必须唯一命名(不能出现同名视图或表名);
  • 创建视图数目无限制,但要考虑复杂查询创建为视图之后的性能影响;
  • 视图不能添加索引,也不能有关联的触发器或者默认值;
  • 视图可以提高安全性,必须具有足够的访问权限;
  • order by 可以用在视图中,但是如果从该视图检索数据 select 中也含有 order by ,那么该视图中的 order by 将被覆盖;
  • 视图可以和表一起使用;

2 🍑用户管理🍑

2.1 🍎用户信息🍎

MySQL中的用户,都存储在系统数据库mysqluser表中:
在这里插入图片描述字段解释:

  • host: 表示这个用户可以从哪个主机登陆,如果是localhost,表示只能从本机登陆;
  • user: 用户名;
  • authentication_string: 用户密码通过password函数加密后的;

2.2 🍎创建用户🍎

create user '用户名'@'登陆主机/ip' identified by '密码';

案例:
比如我们创建一个grm的用户,并且只允许该用户在本地登录:
在这里插入图片描述
此时再查看user表中内容:
在这里插入图片描述
所以现在我们就可以使用普通用户的身份进行登录了。

2.3 🍎删除用户🍎

语法:

drop user '用户名'@'主机名'

这里我就不删除了。

2.4 🍎修改用户密码🍎

语法:

  • 自己改自己密码:
set password=password('新的密码');
  • root用户修改指定用户的密码:
set password for '用户名'@'主机名'=password('新的密码');

2.5 🍎数据库的权限🍎

由于前面我们已经创建了普通用户grm,所以当我们使用普通用户的身份去查看当前存在哪些数据库的时候:
在这里插入图片描述
我们惊讶的发现居然只有一个数据库,之前不是创建了很多数据库的吗?其实这就是权限问题了,之前的数据库全部都是在root用户下创建的,而普通用户是没有root用户权限的,所以这也就导致了为什么在普通用户下看到的数据库要少些,那么我们应该采取怎样的措施呢?

2.5.1 🍋给用户授权🍋

语法:

grant 权限列表 on.对象名 to '用户名'@'登陆位置' [identified by '密码']

说明:
权限列表,多个权限用逗号分开:

grant select on ...
grant select, delete, create on ....
grant all [privileges] on ... -- 表示赋予该用户在该对象上的所有权限
  • *.* : 代表本系统中的所有数据库的所有对象(表,视图,存储过程等);
  • 库.* : 表示某个数据库中的所有数据对象(表,视图,存储过程等);
  • identified by可选。 如果用户存在,赋予权限的同时修改密码,如果该用户不存在,就是创建用户;

补充:MySQL数据库提供的权限列表

权限上下文
createCreate_priv数据库/表/索引
dropDrop_priv数据库/表
grant optionGrant_priv数据库/表/保存的程序
referencesReferences_priv数据库/表
alterAlter_priv
deleteDelete_priv
indexIndex_priv
insertInsert_priv
selectSelect_priv
updateUpdate_priv
create viewCreate_view_priv视图
show viewShow_view_priv视图

使用all将添加所有权限。
现在要给grm用户添加数据库db1所有表的select权限:

grant select on db1.* to 'grm'@'localhost';

此时在grm用户下就能够拥有对数据库db1所有表的select权限:
在这里插入图片描述
此刻想要在grm用户下向account表中插入数据是不被允许的,我们可以为grm用户增加向account表中插入的权限:

grant insert on db1.account to 'grm'@'localhost';

此时在grm用户下:
在这里插入图片描述
便能够插入数据啦!
当然还可以增加其他的权限,在上面列出的权限列表都可以增加。
那我们能够通过什么方式比较直观的看见grm用户的权限吗?
可以使用下面这种方式:
在这里插入图片描述
补充:当发现赋权限后,没有生效,执行指令flush privileges;

2.5.2 🍋回收权限🍋

语法:

revoke 权限列表 on 库.对象名 from '用户名'@'登陆位置'

但是要注意一点:当该用户没有该权限时而去回收该权限会报错。
我们可以使用all回收所有权限,但是一般来说不会这么使用。

我们先向grm用户增加db1数据库中account表的所有权限,然后再去掉对account的select权限:
在这里插入图片描述
在这里插入图片描述
此时在grm用户下就不能够select account表中数据了:
在这里插入图片描述


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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

国企行政题库--校园招聘

国企行政题库是为准备参加国有企业行政类岗位校园招聘的应聘者提供的一套专门准备的试题资料。国有企业在中国经济中扮演着重要的角色&#xff0c;其行政类岗位需求量大&#xff0c;竞争激烈。通过系统学习和准备国企行政题库&#xff0c;将有助于应聘者更好地了解国企行政类岗…

解析OOM的三大场景,原因及实战解决方案

目录 一、什么是OOM 二、堆内存溢出&#xff08;Heap OOM&#xff09; 三、方法区内存溢出&#xff08;Metaspace OOM&#xff09; 四、栈内存溢出&#xff08;Stack OOM&#xff09; 一、什么是OOM OOM 是 Out Of Memory 的缩写&#xff0c;意思是内存耗尽。在计算机领域…

Centos服务器部署前后端项目

目录 准备工作1. 准备传输软件2. 连接服务器 部署Mysql1.下载Mysql(Linux版本)2. 解压3. 修改配置4. 启动服务另一种方法Docker 部署后端1. 在项目根目录中创建Dockerfile文件写入2. 启动 部署前端1. 在项目根目录中创建Dockerfile文件写入2. 启动 准备工作 1. 准备传输软件 …

QEMU源码全解析 —— virtio(24)

接前一篇文章&#xff1a; 上回书讲解了virtioballoon_probe函数及其中的两个重要函数init_vqs()和virtio_device_ready()&#xff0c;解析了init_vqs函数的前两步&#xff0c;本回继续解析该函数&#xff0c; &#xff08;3&#xff09;init_vqs函数在经过了对于各feature的初…

【电机仿真】HFI算法脉振高频电压信号注入观测器-PMSM无感FOC控制

【电机仿真】HFI算法脉振高频电压信号注入观测器-PMSM无感FOC控制 文章目录 前言一、脉振高频电压注入法简介&#xff08;注入在旋转坐标系的d轴&#xff09;1.旋转高频电压&#xff08;电流&#xff09;注入法2.脉振高频电压注入法 二、高频注入理论1.永磁同步电机的高频模型2…

EasyRecovery2024个人免费版本电脑手机数据恢复软件下载

EasyRecovery是一款功能强大的数据恢复软件&#xff0c;能够帮助用户恢复丢失、删除、格式化或损坏的数据。无论是由于误操作、病毒攻击、硬盘故障还是其他原因导致的数据丢失&#xff0c;EasyRecovery都能提供有效的解决方案。 该软件支持从各种存储介质恢复数据&#xff0c;…

springboot215基于springboot技术的美食烹饪互动平台的设计与实现

美食烹饪互动平台的设计与实现 摘 要 如今社会上各行各业&#xff0c;都喜欢用自己行业的专属软件工作&#xff0c;互联网发展到这个时候&#xff0c;人们已经发现离不开了互联网。新技术的产生&#xff0c;往往能解决一些老技术的弊端问题。因为传统美食信息管理难度大&…

密码安全+破解+防御

一步一脚印&#xff01; 目录 密码安全简介 密码猜解思路 字典生成 crunch工具(kali自带) 社工生成字典(safe6pwd)&#xff1a; python代码实现暴力破解 burpsuite爆破 验证码自动识别 hydra爆破ssh密码 hydra工具 medusa爆破ssh密码 medusa工具 msf爆破ssh密码 …

基于YOLOv8深度学习+Pyqt5的电动车头盔佩戴检测系统

wx供重浩&#xff1a;创享日记 对话框发送&#xff1a;225头盔 获取完整源码源文件已标注的数据集&#xff08;1463张&#xff09;源码各文件说明配置跑通说明文档 若需要一对一远程操作在你电脑跑通&#xff0c;有偿89yuan 效果展示 基于YOLOv8深度学习PyQT5的电动车头盔佩戴检…

Open3D 基于最小生成树的法线定向 (27)

Open3D 基于最小生成树的法线定向 (27) 一、算法介绍二、算法实现一、算法介绍 法线计算的方向通常都存在方向问题,用Open3D估计的点云法线,是在每个点的局部进行拟合,估计的法线方向并不一致,Open3D提供了使用最小生成树调整法线到统一方向的方法,下面是具体的实现代码…

微服务-微服务Spring Security OAuth 2实战

1. Spring Authorization Server 是什么 Spring Authorization Server 是一个框架&#xff0c;它提供了 OAuth 2.1 和 OpenID Connect 1.0 规范以及其他相关规范的实现。它建立在 Spring Security 之上&#xff0c;为构建 OpenID Connect 1.0 身份提供者和 OAuth2 授权服务器产…

【机器人学导论笔记】三、操作臂正运动学

3.1 概述 操作臂正运动学研究操作臂的运动特性&#xff0c;主要涉及与运动有关的几何参数和时间参数。本章中&#xff0c;只研究静止状态下操作臂连杆的位置和姿态。 处理这些复杂的几何参数需要一些步骤&#xff1a;首先需要在操作臂的每个连杆上分别固接一个连杆坐标系&…

卷积神经网络 CNN

目录 卷积网络与传统网络的区别 参数共享 卷积神经网络整体架构 卷积操作的作用 卷积核的定义 卷积特征值计算方法 卷积层涉及的参数 边缘填充 ​编辑 卷积结果计算 池化层 整体网格架构 VGG网络架构 残差网络Resnet 卷积网络与传统网络的区别 卷积神经网络&#x…

面向面试的机器学习知识点(4)——分类模型

省流版&#xff1a; 本文介绍机器学习中的回归算法&#xff1a;逻辑回归、KNN、SVM、随机森林和XGBoost。作为机器学习的有监督学习方法&#xff0c;分类模型是最重要也是最常见的一类算法&#xff0c;在数据分析等岗位的笔试面试中都是常客&#xff0c;非常值得深入研究&…

初识Lombok

前言 最近读一些公司的业务代码&#xff0c;发现近几年的java项目工程中都使用了lombok&#xff0c;lombok是一个可以自动生成get,set、toString等模板类方法的工具框架&#xff0c;程序再引入lombok后&#xff0c;添加一个注解便可以不写get\set\toString等方法。 Lombok示例…

UDP 与 TCP 的区别是什么?

目录 区别 一、面向无连接 二、不可靠性 三、高效 四、传输方式 五、适用场景 1.直播 2.英雄联盟 六、总结 区别 首先 UDP 协议是面向无连接的&#xff0c;也就是说不需要在正式传递数据之前先连接起双方。然后 UDP 协议只是数据报文的搬运工&#xff0c;不保证有序且…

Kotlin多线程

目录 线程的使用 线程的创建 例一&#xff1a;创建线程并输出Hello World Thread对象的用法 start() join() interrupt() 线程安全 原子性 可见性 有序性 线程锁 ReentrantLock ReadWriteLock 线程的使用 Java虚拟机中的多线程可以1:1映射至CPU中&#xff0c;即…

【Java程序设计】【C00313】基于Springboot的物业管理系统(有论文)

基于Springboot的物业管理系统&#xff08;有论文&#xff09; 项目简介项目获取开发环境项目技术运行截图 项目简介 这是一个基于Springboot的物业管理系统&#xff0c;本系统有管理员、物业、业主以及维修员四种角色权限&#xff1b; 管理员进入主页面&#xff0c;主要功能包…

MCU独立按键单控LED实现

##江科大视频学习&#xff0c;并且对具体的一些小细节进行更详细的分析。 什么是独立按键&#xff1f; 轻触按键:相当于是一种电子开关&#xff0c;按下开头接通&#xff0c;松开时开头断开&#xff0c;实现原理是通过轻触按键内部的金属弹片受力弹动来实现接通和断开。 注意…

Keepalived介绍、架构和安装

Keepalived介绍、架构和安装 文章目录 Keepalived介绍、架构和安装1.Keepalived&#xff08;高可用性服务&#xff09;1.1 Keepalived介绍1.2 Keepalived 架构1.3 Keepalived 相关文件 2.Keepalived安装2.1 主机初始化2.1.1 设置网卡名和ip地址2.1.2 配置镜像源2.1.3 关闭防火墙…