MySQL视图、用户管理

目录

视图概念和操作

视图基本操作

视图规则和限制 

用户管理

用户


视图概念和操作

什么是视图?

        视图是一个虚拟表,由一个或多个基本表的查询结果组成(视图是存储在数据库中的查询的SQL 语句,不在数据库中以存储的数据值集形式存在)。视图是基于存储在数据库中的数据的可视化表示,它可以像表一样被查询和操作。视图的数据变化会影响到基表,基表的数据变化也会影响视图。视图可以简化复杂查询提供更方便的数据访问方式,并且可以保护基础数据的安全性

        需要注意的是,对视图的修改操作实际上是对基础表的修改操作。因此,当对视图进行插入、更新或删除操作时,实际上是对基础表进行相应的操作。视图只是提供了一种方便和灵活的方式来访问和操作基础表的数据。

视图基本操作

创建视图

create view 视图名 as select 语句;

 实例:有一张部门表和一张员工表,创建一个视图,包含员工名和其部门名

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

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

 删除视图

drop view 视图名; 

示例: 

视图规则和限制 

1.与表名一样,必须唯一命名。

2.创建视图数目无限制,但要考虑复杂查询创建为视图之后的性能影响。

3.视图不能添加索引,也不能有关联的触发器或默认值。

4.视图可以提高安全性,必须有足够的访问权限。

一般这样做:创建一个视图,定义好该视图所操作的数据。之后将用户权限与视图绑定。这样的方式是使用到了一个特性:grant语句可以针对视图进行授予权限给不同的用户使用。

5.order by可以用在视图中,但是如果从该视图检索数据select中也含有order by,那么该视图中的order by将被覆盖

6.视图可以表一起使用。

用户管理

倘若只能使用root用户访问数据库,那么就会数据库就会存在安全隐患,这时就需要使用MySQL的用户管理。

用户

用户信息:MySQL的用户信息都存储在系统数据库mysql的user表中。

查看user表:

字段解释:

host:表示该用户可以从哪个主机登陆,如果是localhost,表示只能从本机登陆

user:用户名

authentication_string:用户密码通过password函数加密后的 

*_priv:表示用户是否拥有该权限,如下:

创建用户 

语法:

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

创建时,登陆地址使用%表示任意登陆地址,删除时也同理。

示例:

创建一个用户名为ys的用户:

使用ys用户登录:

修改用户密码

普通用户可以通过调用password函数修改自己的密码,超级用户可以通过调用password函数修改任意用户的密码。 

删除用户

删除用户的SQL如下:

DROP USER '用户名'@'登录地址';

给用户授权

SQL:

GRANT 权限列表 ON 库名.对象名 TO '用户名'@'登录地址' [IDENTIFIED BY '密码'];

说明: 

权限列表:表示要授予用户何种权限,多个权限

库名.对象名:表示要授予用户哪个数据库下的哪个对象的权限。

'用户名'@'登录地址':表示给哪一个用户授权。

IDENTIFIED BY '密码':可选,如果用户存在,则在授予权限的同时修改改用户的密码,如果用户不存在,则创建该用户。

结合视图,要给用户授权访问某个视图,可以使用下面GRANT语句:

GRANT SELECT ON database_name.view_name TO 'username'@'localhost';

 查看用户现有权限

在root用户下授权:

授权后通过show grants for '用户名'@'登录地址' 命令,可以查看该用户现有的权限,如下:

回收权限

 回收权限的SQL如下:

REVOKE 权限列表 ON 库名.对象名 FROM '用户名'@'登录地址';

 语法和授予权限类似。

例如:root用户回收权限

普通用户失去访问权限了:

 

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

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

相关文章

Verilator: sh: 1: exec: < PATHNAME >: not found

事出有因 I assumed that I install verilator via git clone its source, so I need to set the export VERILATOR_ROOT. At first, due to laziness, I just copy the code directly to my ubuntu. so stupid I am!!! Then, I recoginzed that the pathname is not real, …

wireshark of tshark tools v3.4.0版本 支持json

tshark(1) Install tshark (Wireshark) Ver.3.4.0 on CentOS7 --It must be "ps", "text", "pdml", "psml" or "fields". TCP 协议中的三次握手和四次挥手是 TCP 连接建立和关闭的过程。 三次握手 客户端向服务器发送 SYN…

JMeter学习第一、二、三天

首先,我们来了解一下到底什么是接口测试与性能测试: 接口测试 定义 接口测试主要关注系统组件之间的交互,确保各个接口按预期工作。这包括验证传递的数据、数据格式、调用的频率和其他与接口调用相关的任何限制。 目的 确保系统的各个组件可…

mac清理垃圾的软件有哪些?这三款我最推荐

没错,Mac电脑真的好用,但是清理系统垃圾可不是件容易的事。由于Mac系统的封闭性,系统的缓存垃圾常常隐藏得让人发现不了。不过,别担心!有一些专业的Mac清理软件可以帮你解决这一系列问题,让清理垃圾变得轻松…

10链表-单链表构造LinkedList

目录 LeetCode之路——707. 设计链表 分析: Code: LeetCode之路——707. 设计链表 你可以选择使用单链表或者双链表,设计并实现自己的链表。 单链表中的节点应该具备两个属性:val 和 next 。val 是当前节点的值,n…

什么是TF-A项目的长期支持?

安全之安全(security)博客目录导读 问题:Trusted Firmware-A社区每六个月发布一次代码。然而,对于生产中的平台,该策略在维护、重要软件修复的向后兼容性、获得最新的安全缓解措施和整体产品生命周期管理方面不具备可扩展性。 开源软件项目&…

【C++设计模式之原型模式:创建型】分析及示例

简介 原型模式(Prototype Pattern)是一种创建型设计模式,它允许通过复制已有对象来生成新的对象,而无需再次使用构造函数。 描述 原型模式通过复制现有对象来创建新的对象,而无需显式地调用构造函数或暴露对象的创建…

LDGRB-01 用于在边缘处理人工智能的嵌入式硬件

LDGRB-01 用于在边缘处理人工智能的嵌入式硬件商业和企业中的IT系统正在全面快速发展,一个不断增长的趋势正在将计算能力推向边缘。Gartner预测,到2025年,边缘计算将处理75%的数据由所有用例产生,包括工厂、医疗保健和运输中的用…

[GXYCTF2019]禁止套娃 无回显 RCE 过滤__FILE__ dirname等

扫除git 通过githack 获取index.php <?php include "flag.php"; echo "flag在哪里呢&#xff1f;<br>"; if(isset($_GET[exp])){if (!preg_match(/data:\/\/|filter:\/\/|php:\/\/|phar:\/\//i, $_GET[exp])) {if(; preg_replace(/[a-z,_]\(…

Vue中如何进行响应式图像与图片懒加载优化

Vue中响应式图像与图片懒加载优化 在现代的Web开发中&#xff0c;图像在网站性能和用户体验方面扮演着至关重要的角色。然而&#xff0c;加载大量的图像可能会导致网页加载速度变慢&#xff0c;从而影响用户的满意度。为了解决这个问题&#xff0c;Vue.js提供了一些强大的工具…

【gitlab】git push -u origin master 报403

问题描述 gitlab版本&#xff1a;14.0.5 虚拟机版本&#xff1a;centos7 项目&#xff1a;renren-fast 原因分析 .git -> config目录下 url配错 但这个url不是手动配置的&#xff0c;还不知道怎么生成。 解决方法 把配置错误的url改成gitlab的project的url 这样&#…

Android学习之路(20) 进程间通信

IPC IPC为 (Inter-Process Communication) 缩写&#xff0c;称为进程间通信或跨进程通信&#xff0c;指两个进程间进行数据交换的过程。安卓中主要采用 Binder 进行进程间通信&#xff0c;当然也支持其他 IPC 方式&#xff0c;如&#xff1a;管道&#xff0c;Socket&#xff0…

VS Code更改软件的语言

刚刚安装好的 vscode 默认是英文&#xff0c;可以安装中文扩展包。如图&#xff1a; 重启即可更换为中文。 如果想切换为英文&#xff0c;可以 Ctrl Shift P&#xff0c;打开命令面板。 输入 Configure DIsplay Language&#xff0c;如图&#xff1a; 可以在中英文之间切换…

10.04

QT实现TCP服务器客户端搭建的代码&#xff0c;现象 widget.h #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QTcpSocket> #include <QMessageBox>QT_BEGIN_NAMESPACE namespace Ui { class Widget; } QT_END_NAMESPACEclass Widget : p…

网络安全面试题汇总(附答案)

作为从业多年的网络安全工程师&#xff0c;我深知在面试过程中面试官所关注的重点及考察的技能点。网络安全作为当前信息技术领域中非常重要的一部分&#xff0c;对于每一个从事网络安全工作的人员来说&#xff0c;不仅需要掌握一定的技术能力&#xff0c;更需要具备全面的综合…

数据结构P46(2-1~2-4)

2-1编写算法查找顺序表中值最小的结点&#xff0c;并删除该结点 #include <stdio.h> #include <stdlib.h> typedef int DataType; struct List {int Max;//最大元素 int n;//实际元素个数 DataType *elem;//首地址 }; typedef struct List*SeqList;//顺序表类型定…

Spring 作用域解析器AnnotationScopeMetadataResolver

博主介绍&#xff1a;✌全网粉丝近5W&#xff0c;全栈开发工程师&#xff0c;从事多年软件开发&#xff0c;在大厂呆过。持有软件中级、六级等证书。可提供微服务项目搭建与毕业项目实战&#xff0c;博主也曾写过优秀论文&#xff0c;查重率极低&#xff0c;在这方面有丰富的经…

基于SSM的大学生就业信息管理系统设计与实现

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;采用JSP技术开发 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#x…

利用freesurfer6进行海马分割的环境配置和步骤,以及获取海马体积

利用freesurfer6进行海马分割的环境配置和步骤 Matlab Runtime 安装1. 运行recon-all&#xff1a;2. 利用 recon-all -s subj -hippocampal-subfields-T1 进行海马分割3. 结束后需要在/$SUBJECTS_DIR/subject/的文件夹/mri路径下输入下面的代码查看分割情况4. 在文件SUBJECTS_D…

C++转换函数

什么是转换函数? C转换函数是一种特殊的成员函数&#xff0c;用于将一个类的对象转换为另一个类型。它是通过在类中定义特定的函数来实现的。 转换函数的用途&#xff1a; 类型转换&#xff1a;转换函数可以将一个类的对象从一种类型转换为另一种类型。这样可以方便地在不同…