当前位置: 首页 > news >正文

MySQL——10、视图和用户管理

视图和用户管理

  • 1、视图
  • 2、MySQL用户管理
    • 2.1、用户管理
      • 2.1.1、创建用户
      • 2.1.2、删除用户
      • 2.1.3、修改用户密码
    • 2.2、数据库权限
      • 2.2.1、给用户授权
      • 2.2.2、回收权限

1、视图

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

创建一个视图:

create view 视图名 as select语句;

比如针对之前的员工表emp和部门表dept,现在我想知道所有员工及其对应的部门,我们可以采用内连接方式:
在这里插入图片描述

而如果我们需要频繁的查询这些数据,我们每次都需要进行内连接并设置条件筛选,这样也太麻烦了,因此我们可以将这个返回的表结构创建一个视图:

在这里插入图片描述
创建myview视图,就会根据我们select返回的表结构来创建一张临时的表保存数据。
此时对myview表中的数据进行修改,会影响到基表emp和dept。而对基表emp和dept进行修改也会影响到myview视图,如下:

在这里插入图片描述

删除视图:

drop view 视图名;

在这里插入图片描述

视图的限制和使用规则:

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

2、MySQL用户管理

2.1、用户管理

在这里插入图片描述
我们前面的所有操作都是直接采用root账户进行的,并且我们配置了免密码登录,从现在开始我们需要设置对应的密码并且最好不要直接使用root账户进行操作。

首先查看数据库,我们可以发现有一个mysql的数据库:
在这里插入图片描述

然后我们进入这个数据库,查看这个数据库的所有表,我们发现有一个user表,接下来我们看一些user表存储了哪些数据:
在这里插入图片描述
然后我们主要看三个字段:
Host:表示登录的主机,为localhost表示只能本地主机登录,我们在创建用户的时候可以设置对应的主机。
User:表示用户。
authentication_string:这是原始密码经过加密后形成的。
其他字段xxx_priv表示是否具有xxx权限,所以mysql对用户的管理本质上就是对user表的增删查改。

我们将这三个字段单独拿出来查看:
在这里插入图片描述

在之前我们root账户是在mysqld.conf中配置了skip-grant-tables,直接跳过权限验证无密码登录的,这时候我们需要先修改root的密码,然后去除掉skip-grant-tables配置,否则后续无法进行用户和权限管理操作:
在这里插入图片描述
在这里插入图片描述

我们直接使用update将root用户的密码改为空,并且使用flush privileges刷新一下。接下来我们删除配置skip-grant-tables,重启mysql服务,就可以直接无密码登录root账户了,登陆后我们再重新设置root账户密码,这时候就可以设置成功。
在这里插入图片描述
此时我们就可以无密码直接登录mysql,然后使用alter user修改密码,修改后刷新一下即可。

2.1.1、创建用户

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

在这里插入图片描述
下面使用我们创建的zzy这个账户进行登录看看:
在这里插入图片描述
我们发现只有这两个数据库,其他数据库比如:test_db我们是看不到的,虽然我们知道有test_db这个数据库,但是直接访问也是无法访问的,因为没有权限。

2.1.2、删除用户

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

在这里插入图片描述

前面我们创建的用户都是在本地,这时候我们可以创建一个所有主机都可以登录的用户,其中host使用%:
在这里插入图片描述
虽然我们创建了一个可以用任意主机登录的账户,但是还需要修改mysql的配置文件才能远程登录。
在这里插入图片描述
如图:将mysql的bind-address改为0.0.0.0,表示允许所有IP连接,然后重启mysql服务即可远程登录。
在这里插入图片描述
如上图,使用windows上的mysql客户端连接云服务器上的mysqld服务端。

2.1.3、修改用户密码

-- 修改当前用户密码
alter user user() identified by '新密码';-- 修改特定用户密码
alter user '用户名'@'主机名' identified by '新密码';-- 修改当前用户密码
set password = '新密码';-- 修改其他用户密码
set password for '用户名'@'主机名' = '新密码';

当然也可以直接update去更新user表,包括创建用户实际上也可以直接insert,但是不推荐这种方式,

在这里插入图片描述
在这里插入图片描述


2.2、数据库权限

数据库提供的权限有:
在这里插入图片描述

2.2.1、给用户授权

刚创建的用户没有任何权限,所以我们要授予用户权限。
语法:

grant 权限列表 on.对象名 to '用户名'@'登陆位置' [identified by '密码']
  • 权限列表可以跟多个权限用逗号分隔开。
  • *.* : 代表本系统中的所有数据库的所有对象(表,视图,存储过程等)
  • 库.* : 表示某个数据库中的所有数据对象(表,视图,存储过程等)
  • identified by可选。如果用户存在,赋予权限的同时修改密码,如果该用户不存在,就是创建用户。

下面我们使用root账户创建一个数据库和一张表,并给zzy用户赋予select权限。
在这里插入图片描述

此时我们使用zzy账户登录就可以看到testDB这个数据库,并且可以进入数据库读取user表的数据。
在这里插入图片描述

下面我们使用zzy账户对user表进行更新删除插入操作:
在这里插入图片描述
发现无法进行删除更新和插入操作,因为我们目前只有select权限。

查看用户的权限:

show grants for '用户名'@'主机';

在这里插入图片描述

我们也可以给zzy用户赋予delete、update、insert权限,当然还可以直接赋予all所有权限。
在这里插入图片描述

2.2.2、回收权限

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

在这里插入图片描述


文章转载自:

http://FekghK1R.zfkxj.cn
http://E9abQUcL.zfkxj.cn
http://5uJTpo9i.zfkxj.cn
http://ftoeHH6v.zfkxj.cn
http://oqRff2UZ.zfkxj.cn
http://BsYXWBTy.zfkxj.cn
http://GEY8gejn.zfkxj.cn
http://2PfpiyRm.zfkxj.cn
http://rO2iBisg.zfkxj.cn
http://PpX57eES.zfkxj.cn
http://87hBFkkT.zfkxj.cn
http://5104qUjN.zfkxj.cn
http://spJjggup.zfkxj.cn
http://qUH5lImo.zfkxj.cn
http://O0EJ9fvZ.zfkxj.cn
http://FHjliyEj.zfkxj.cn
http://qgtGNTpK.zfkxj.cn
http://DAaruwTa.zfkxj.cn
http://TC6a0Jow.zfkxj.cn
http://xYIoxJB4.zfkxj.cn
http://76HRCR64.zfkxj.cn
http://QCp5aGEJ.zfkxj.cn
http://iD1Ch6Ag.zfkxj.cn
http://2ObKf4i1.zfkxj.cn
http://F8wqlYjT.zfkxj.cn
http://1dojeYun.zfkxj.cn
http://H2E63eHe.zfkxj.cn
http://s6Jkuh5q.zfkxj.cn
http://rbF40SaW.zfkxj.cn
http://6N1t11Sj.zfkxj.cn
http://www.dtcms.com/a/385952.html

相关文章:

  • 热点供应链投毒预警 | 知名NPM开发者遭受邮件钓鱼引发大规模供应链投毒攻击
  • 机器学习-NLP中的微调
  • uniapp+<script setup lang=“ts“>单个时间格式转换(format)
  • 第8篇、Kafka 监控与调优实战指南
  • R 语言查看类库源码的方法
  • 理解并发编程:自旋锁、互斥锁与读写锁的解析
  • Java 大视界 -- Java 大数据在智能安防视频监控系统中的视频内容理解与智能预警升级
  • 腾讯元宝 Java 中的 23 种设计模式(GoF 设计模式)
  • Excel:根据数据信息自动生成模板数据(多个Sheet)
  • hibernate和mybatis的差异,以及这种类似场景的优缺点和选择
  • 设计模式之:观察者模式
  • 【pycharm】ubuntu24.04 安装配置index-tts及webdemo快速上手
  • Java 设计模式——观察者模式:从 4 种写法到 SpringBoot 进阶
  • “光敏” 黑科技:杜绝手机二维码读取时的 NFC 误触
  • AIGC(生成式AI)试用 36 -- shell脚本(辅助生成)
  • 【计算机网络 | 第17篇】DNS资源记录和报文
  • Flowise安全外网访问指南:基于cpolar的隧道配置详解
  • MySQL OCP认证[特殊字符]Oracle OCP认证
  • Springboot使用Freemark模板生成XML数据
  • 【数据工程】 10. 半结构化数据与 NoSQL 数据库
  • HarmonyOS应用开发:深入ArkUI声明式开发与性能优化实践
  • Vue: 组件注册
  • 408考研计算机网络第38题真题解析(2024)
  • Uni-app 生命周期全解析
  • JavaEE开发技术(第一章:Servlet基础)
  • 【数据结构】跳表
  • 设计模式-桥接模式02
  • Linux 基础命令详解与学习笔记
  • 设计模式(C++)详解——桥接模式(2)
  • 鹧鸪云光储流程系统:以智能仓储管理,驱动项目高效协同