【MySQL】视图、用户和权限管理

news2024/9/30 8:02:41

目录

  • 视图
    • 创建视图
    • 数据修改影响
    • 删除视图
    • 视图优点
  • 用户和权限管理
    • 查看当前的数据库拥有用户信息
    • 创建用户
    • 修改密码
    • 删除用户
    • 权限
      • 授权
      • 回收权限

视图

视图就是相当于创建一个表,将查询到的结果集给存储起来。像使用复杂的多表查询查询到的结果集就不可以对结果集操作。而使用视图就可以。

  • 视图是⼀个虚拟的表,它是基于⼀个或多个基本表或其他视图的查询结果集。

  • 视图本⾝不存储数据,⽽是通过执⾏查询来动态⽣成数据。
    ⽤⼾可以像操作普通表⼀样使⽤视图进⾏查询、更新和管理。

  • 视图本⾝并不占⽤物理存储空间,它仅仅是⼀个查询的逻辑表⽰,物理上它依赖于基础表中的数据。

  • 使用查询语句查询查询真实数据时可以拿到敏感信息,但是如果将视图传给其他人来查询就可以避免。

创建视图

create view 视图名 (视图列名可省略) as (查询结果);

创建视图时如果将列名省略,那么是由查询结果的列名作为视图列名,但是如果查询结果中列名有重复就会创建失败,需要采取给其起别名来解决。

数据修改影响

对视图的操作就跟表操作一样。

  • 修改真实表的数据会影响视图。
  • 修改视图也会影响真实表。

视图修改的条件:

  • 创建视图时不能使⽤聚合函数。
  • 创建视图时不能使⽤distinct
  • 创建视图时不能使⽤group byhaving子句。
  • 创建视图时不能使⽤unionunion all联合查询语句。
  • 查询列表中不能使⽤⼦查询。
  • from⼦句中引⽤不可更新视图。

删除视图

drop view 视图名;

视图优点

  • 简单性:视图可以将复杂的查询封装成⼀个简单的查询。例如,针对⼀个复杂的多表连接查询,可以创建⼀个视图,⽤⼾只需查询视图⽽⽆需了解底层的复杂逻辑。
  • 安全性:通过视图,可以隐藏表中的敏感数据。例如,⼀个系统的⽤⼾表中,可以创建⼀个不包含密码列视图,普通⽤⼾只能访问这个视图,⽽不能访问原始表。
  • 逻辑数据独立性:视图提供了⼀种逻辑数据独⽴性,即使底层表结构发⽣变化,只需修改视图定义,⽽⽆需修改依赖视图的应⽤程序。使⽤到应⽤程序与数据库的解耦
  • 可读性:视图允许⽤⼾重命名列名,以增强数据可读性。

用户和权限管理

在我们练习中都是使用root用户,root用户权限很大且一个数据库只有一个,在实际应用中,用户权限大小至关重要,而且还要有多个用户。

查看当前的数据库拥有用户信息

用户信息存储在系统库mysql中的user表里面。mysql库是系统库,我们不要对其修改。

语法:

use mysql;
select host, user, authentication_string from user;

名词解释:

  • host:允许登录的主机,相当于⽩名单,如果是localhost,表⽰只能从本机登陆。
  • user:⽤⼾名。
  • *_priv:⽤⼾拥有的权限,*表示多个单词,相当于通配符。
  • authentication_string :加密后的⽤⼾密码

创建用户

语法:

create user [IF NOT EXISTS] '用户名(区分⼤⼩写)'@'主机名' identified by '密码';

这样创建的用户没有任何权限。

注意事项:

  • 如果不指定host_name相当于’user_name’@‘%’,%表⽰所有主机都可以连接到数据库,强烈建
    议不要这样设置,因为会导致严重的安全问题。
  • 用户名和主机名中间的@没包含在单引号’'只内。
  • host_name可以通过⼦⽹掩码设置主机范围:
    ◦ 198.0.0.0/255.0.0.0 :A段⽹络中的任意⼀台主机;
    ◦ 198.51.0.0/255.255.0.0: 198.51 B段⽹络中的任意⼀台主机;
    ◦ 198.51.100.0/255.255.255.0: 198.51.100 C段⽹络中的任意⼀台主机;
    ◦ 198.51.100.1 :只包含特定IP地址的主机。
  • 从MySQL8.0.23开始,指定为IPv4地址的主机值可以使⽤CIDR表⽰法写⼊,例如198.51.100.44/24。
  • 允许在IP地址中使⽤%通配符,⽐如,主机值’%'匹配任何主机名, 198.51.100.% 匹配
    198.51.100 C段⽹络中的任何主机。MySQL8.0.35中已弃⽤,以后可能会删除。

示例:
添加⼀个名为ikun的新⽤⼾,允许从本机登录

 create user 'bit'@'localhost' identified by '123456';

修改密码

语法:

# 为指定⽤⼾设置密码 
alter user '用户名(区分大小写)'@'主机名' identified by '新密码';
# 为指定⽤⼾设置密码
set password for '用户名(区分大小写)'@'主机名' = '新密码';
# 为当前登录⽤⼾设置密码
set password = '新密码';

示例:

  • 以root⾝份登录,为’ikun’@'localhost’⽤⼾重置密码
 ALTER USER 'bit'@'localhost' IDENTIFIED BY '987654';
  • 以root⾝份登录,为’ikun’@'localhost’⽤⼾重置密码
SET PASSWORD FOR 'bit'@'localhost' = '123456';
  • 以ikun⽤⼾登录,修改当前登录⽤⼾的密码
 SET PASSWORD = '111111';

删除用户

语法:

drop user [if exists] '用户名(区分大小写)'@'主机名';

示例:
删除用户’ikun’@‘192.168.1.1/24’

drop user 'ikun'@'192.168.1.1/24';

权限

MySQL内置⽀持的权限列表如下:

授权

语法:

grant priv_type[, priv_type ...] on priv_level to'user_name'@'host_name' [WITH GRANT OPTION];

名词解释:

  • priv_type:根据类型,参考根据列表4.1中的Privilege列。
  • priv_level:* | . | db_name.* | db_name.tbl_name | tbl_name,⽐如*.*表⽰所有数据库下的所
    有表。
  • ‘user_name’@‘host_name’:指定⽤⼾。
  • [WITH GRANT OPTION]:可选,允许⽤⼾将⾃⼰的权限授权给其它⽤⼾。

示例:
为ikun@localhost⽤⼾授权于 java01 数据库的 select 权限。

grant select on java01.* to 'ikun'@'localhost';

回收权限

语法:

REVOKE [IF EXISTS] priv_type[, priv_type] ... ON priv_level FROM 'user_name'@'host_name' [, 'user_name'@'host_name'] ...

示例:
回收ikun@localhost⽤⼾对于 java01 数据库的权限:

REVOKE all on *.* from 'ikun'@'localhost';

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

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

相关文章

Go语言中的深拷贝:概念、实现与局限

前不久,在“Gopher部落”知识星球[1]上回答了一个Gopher关于深拷贝(Deep Copy)的问题,让我感觉是时候探讨一下深拷贝技术了。 在日常开发工作中,深拷贝的使用频率相对较低,可能有80%的时间不需要使用深拷贝,只有在特定…

【PHP源码】匿名来信系统H5版本V1.0免费开源

你的匿名来信H5一封你的来信源码/表白祝福短信程序/往来信/传话短信源码支持邮件发信与手机短信发信“你的匿名来信”是最近某音上爆火的一个活动话题,可以通过H5网站,编辑自己想要对某人说的话或者祝福,网站会把您想说的发给您预留的号码&am…

免费语音转文字软件全览:开启高效记录新时代

在当今快节奏的信息时代,高效地处理和记录信息变得至关重要。语音转文字技术的出现,为我们带来了极大的便利,今天,就让我们一同探讨这些语音转文字免费的软件的使用方法。 1.365在线转文字 链接直达:https://www.pdf…

el-table添加fixed后错位问题

1 方案1 return {isShow:false, }mounted() {this.isShowtrue},watch: {$route(newRoute) {this.monitoredRoute newRoute; // 将新的路由信息保存到组件的monitoredRoute属性中// 执行其他操作或调用其他方法},//或$route(newRoute) {this.monitoredRoute newRoute; // 将新…

如何通过视频美颜SDK实现高效的直播美颜API开发?

很多小伙伴疑问短视频和直播平台中的主播美颜工具是如何开发的,今天我们就来探讨一下如何通过视频美颜SDK,高效实现直播美颜API开发,助力开发者快速打造出高质量的直播美颜功能。 一、视频美颜SDK的核心功能 要了解如何高效开发直播美颜API…

Golang | Leetcode Golang题解之第446题等差数列划分II-子序列

题目: 题解: func numberOfArithmeticSlices(nums []int) (ans int) {f : make([]map[int]int, len(nums))for i, x : range nums {f[i] map[int]int{}for j, y : range nums[:i] {d : x - ycnt : f[j][d]ans cntf[i][d] cnt 1}}return }

Linux操作系统如何定时关机?

在日常使用电脑的过程中,一般都会有软件升级、系统杀毒的工作,可能还需要电脑的定时关机、提醒事项功能。对于Linux操作系统,可以使用几种任务计划工具来指定相应的任务计划,使这些需求自动在后台运行。 一、at命令 at命令的作用…

mongodb光速上手

开始 mongodb是一种nosql数据库,即非关系型数据库。 安装好后将bin目录添加到环境变量。 安装studio-3t,这是可视化编辑器。 启动 mongo --host localhost --port 27017 指令 查看所有库 show dbs 使用或创建并使用库 use school use 数据库名 向…

VUE 开发——AJAX学习(三)

一、async函数和await async和await关键字让我们可以用一种更简洁的方式写出基于Promise的异步行为,而无需刻意地链式调用Promise async写在函数声明的前面;在async函数内,使用await关键字,获取Promise对象“成功状态”结果值 &…

Ubuntu 安装 Docker Compose

安装Docker Compose # 删除现有的 docker-compose(如果存在) sudo rm -f /usr/local/bin/docker-compose ​ # 下载最新的 docker-compose 二进制文件 sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-…

Visual Studio-X64汇编编写

纯64位汇编: includelib ucrt.lib includelib legacy_stdio_definitions.lib includelib user32.libextern printf:proc extern MessageBoxA:proc.data szFormat db "%s",0 szHello db "HelloWorld",0 szRk db "123",0.code start p…

Linux下驱动开发实例

驱动开发 驱动与硬件的分离 在传统的嵌入式系统开发中,硬件信息往往是直接硬编码在驱动代码中的。这样做的问题是,当硬件发生变化时,比如增加或更换设备,就需要修改驱动程序的代码,这会导致维护成本非常高。因此&…

C++队列、双向队列

前言 C算法与数据结构 打开打包代码的方法兼述单元测试 队列 队列(Queue)是一种基本的线性数据结构,它遵循先进先出(First In First Out, FIFO)的原则。这意味着最先被添加到队列中的元素将会是最先被移除的。和生活…

Vue 3 魔法揭秘:CSS 解析与 scoped 背后的奇幻之旅

文章目录 一、背景二、源码分析transformMain 返回值transformStyle 方法compileStyleAsync 方法scopedPlugin 方法template 添加 __scopeId 三、总结 一、背景 Vue 3 文件编译流程详解与 Babel 的使用 上文分析了 vue3 的编译过程,但是在对其中样式的解析遗留了一…

方舟开发框架(ArkUI)可运行 OpenHarmony、HarmonyOS、Android、iOS等操作系统

ArkUI 是华为开发的一套声明式 UI 开发框架,用于构建分布式应用界面。ArkUI-X 是对 ArkUI 框架的扩展,支持开发者使用一套代码构建支持多平台(包括 OpenHarmony、HarmonyOS、Android、iOS)的应用。 一、方舟开发框架的ArkUI-X Ark…

libcrypto.so.10内容丢失导致sshd无法运行

说明: 我的是centos的服务器,被扫出有ssh漏洞,需要升级到OpenSSH_9.8p1, OpenSSL 3.0.14 4 报错 我的系统和环境升级前的版本 这是升级之后的版本 OpenSSH_9.8p1, OpenSSL 3.0.14 4 解决:我这个的原因是升级的时候把这个文件给删除了, 复制旧服务器上的 libcrypto.so.1…

【C++单调队列】1438. 绝对差不超过限制的最长连续子数组|1672

本文时间知识点 C队列、双向队列 LeetCode1438. 绝对差不超过限制的最长连续子数组 给你一个整数数组 nums ,和一个表示限制的整数 limit,请你返回最长连续子数组的长度,该子数组中的任意两个元素之间的绝对差必须小于或者等于 limit 。 如…

Python 复制PDF中的页面

操作PDF文档时,复制其中的指定页面可以帮助我们从PDF文件中提取特定信息,如文本、图表或数据等,以便在其他文档中使用。复制PDF页面也可以实现在不同文件中提取页面,以创建一个新的综合文档。 本文将介绍如何使用Python 在同一文档…

Linux 计划任务

1.常见定时计划任务设置方式: at: 突发性的,临时决定只执行一次的任务。 crontab: 定时性的,每隔一定的周期就需要重复执行一次的命令。 用#date 为参考时间 1.1 at 计划任务的使用: 使用…

1.8 软件业务测试

欢迎大家订阅【软件测试】 专栏,开启你的软件测试学习之旅! 文章目录 前言1 概述2 方法3 测试策略4 案例分析 前言 在软件开发生命周期中,业务测试扮演着至关重要的角色。本文详细讲解了业务测试的定义、目的、方法以及测试策略。 本篇文章参…