【MySQL】视图与用户管理

article/2025/7/1 13:06:06

目录

一、视图

(一)基本使用

1、创建视图

2、修改视图

3、删除视图

(二)视图规则和限制

二、用户管理

(一)用户操作

1、用户信息

2、创建用户

3、删除用户

4、修改用户密码

(二)权限操作

1、给用户授权

2、回收权限


一、视图

(一)基本使用

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

        测试表:

mysql> select * from grade;
+----+--------+---------+------+
| id | name   | chinese | math |
+----+--------+---------+------+
|  1 | 张三   |      85 |   90 |
|  2 | 李四   |      94 |   83 |
+----+--------+---------+------+
2 rows in set (0.00 sec)

1、创建视图

        语法:

create view 视图名 as select语句;

        案例:

mysql> create view grade_total as select name, chinese+math as total from grade;
Query OK, 0 rows affected (0.01 sec)mysql> select * from grade_total;
+--------+-------+
| name   | total |
+--------+-------+
| 张三   |   175 |
| 李四   |   177 |
+--------+-------+
2 rows in set (0.00 sec)

2、修改视图

        修改视图:

//修改视图张三姓名
mysql> update grade_total set name='zhangsan' where name='张三';
Query OK, 1 row affected (0.01 sec)
Rows matched: 1  Changed: 1  Warnings: 0mysql> select * from grade_total;
+----------+-------+
| name     | total |
+----------+-------+
| zhangsan |   175 |
| 李四     |   177 |
+----------+-------+
2 rows in set (0.00 sec)
//基表也发生了变化
mysql> select * from grade;
+----+----------+---------+------+
| id | name     | chinese | math |
+----+----------+---------+------+
|  1 | zhangsan |      85 |   90 |
|  2 | 李四     |      94 |   83 |
+----+----------+---------+------+
2 rows in set (0.00 sec)

        修改基表:

//修改基表
mysql> update grade set chinese=chinese+10 where name='李四';
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0mysql> select * from grade;
+----+----------+---------+------+
| id | name     | chinese | math |
+----+----------+---------+------+
|  1 | zhangsan |      85 |   90 |
|  2 | 李四     |     104 |   83 |
+----+----------+---------+------+
2 rows in set (0.01 sec)
//视图也发生了变化
mysql> select * from grade_total;
+----------+-------+
| name     | total |
+----------+-------+
| zhangsan |   175 |
| 李四     |   187 |
+----------+-------+
2 rows in set (0.00 sec)

        即使是删除视图中的元素,基表的数据也会发生相应的变化:

mysql> delete from grade_total where name='李四';
Query OK, 1 row affected (0.00 sec)mysql> select * from grade_total;
+----------+-------+
| name     | total |
+----------+-------+
| zhangsan |   175 |
+----------+-------+
1 row in set (0.00 sec)mysql> select * from grade;
+----+----------+---------+------+
| id | name     | chinese | math |
+----+----------+---------+------+
|  1 | zhangsan |      85 |   90 |
+----+----------+---------+------+
1 row in set (0.00 sec)

3、删除视图

        视图实际就是一种虚拟表,可以简单地将视图理解为表。

        语法:

drop view 视图名;
mysql> show tables;
+----------------+
| Tables_in_test |
+----------------+
| grade          |
| grade_total    |
| student        |
| test           |
+----------------+
4 rows in set (0.00 sec)mysql> drop view grade_total;
Query OK, 0 rows affected (0.00 sec)mysql> show tables;
+----------------+
| Tables_in_test |
+----------------+
| grade          |
| student        |
| test           |
+----------------+
3 rows in set (0.00 sec)

(二)视图规则和限制

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

二、用户管理

        在之前的文章里都是采用 root 账号进行操作,但实际这样存在着一定的安全隐患。MySQL也为用户提供了用户管理功能,更加方便用户之间进行协作并提高数据库的安全性。

(一)用户操作

1、用户信息

        MySQL中的用户,都存储在系统数据库 mysql 的 user 表中;

mysql> use mysql;
Database changed
mysql> select host, user, authentication_string from user;
+-----------+---------------+-------------------------------------------+
| host      | user          | authentication_string                     |
+-----------+---------------+-------------------------------------------+
| localhost | root          | *91E7E734CE71D28116DB307A61B0BEB2BF3FED3D |
| localhost | mysql.session | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
| localhost | mysql.sys     | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
| localhost | X             | *11F56A9E77ADBECFA3A3E6CD6452BDDE15457500 |
+-----------+---------------+-------------------------------------------+
4 rows in set (0.00 sec)

        实际 MySQL 在执行用户相关操作都是对该表进行增删改操作,用户也可以直接对改变进行操作也能达到相应的效果,但不i推荐。

字段解释:

  • host:表示用户从哪个主机进行登录,localhost 代表只能从本机登录;
  • user:用户名;
  • authentication_string:用户密码通过 password 函数加密后;
  • *_priv:用户权限。

2、创建用户

        语法:

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

        案例:

mysql> create user 'test'@'localhost' identified by 'Tt123456!';
Query OK, 0 rows affected (0.00 sec)mysql> select host, user, authentication_string from user;
+-----------+---------------+-------------------------------------------+
| host      | user          | authentication_string                     |
+-----------+---------------+-------------------------------------------+
| localhost | root          | *91E7E734CE71D28116DB307A61B0BEB2BF3FED3D |
| localhost | mysql.session | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
| localhost | mysql.sys     | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
| localhost | X             | *11F56A9E77ADBECFA3A3E6CD6452BDDE15457500 |
| localhost | test          | *08869AD15C736ECAD541A4FED325EBA2AF89850C |
+-----------+---------------+-------------------------------------------+
5 rows in set (0.00 sec)

3、删除用户

        语法:

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

        案例:

mysql> drop user 'test'@'localhost';
Query OK, 0 rows affected (0.00 sec)mysql> select host, user, authentication_string from user;
+-----------+---------------+-------------------------------------------+
| host      | user          | authentication_string                     |
+-----------+---------------+-------------------------------------------+
| localhost | root          | *91E7E734CE71D28116DB307A61B0BEB2BF3FED3D |
| localhost | mysql.session | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
| localhost | mysql.sys     | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
| localhost | X             | *11F56A9E77ADBECFA3A3E6CD6452BDDE15457500 |
+-----------+---------------+-------------------------------------------+
4 rows in set (0.00 sec)

4、修改用户密码

//为指定用户设置密码
set password for '用户名'@'主机名'=password('新的密码');
//设定当前用户密码
set password=password('新的密码');

(二)权限操作

1、给用户授权

        语法:

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

        案例:

//root
mysql> create database test;
Query OK, 1 row affected (0.00 sec)mysql> use test;
Database changedmysql> create table test( id int primary key auto_increment, name varchar(20)not null);
Query OK, 0 rows affected (0.02 sec)mysql> insert into test(name) values('张三'), ('李四');
Query OK, 2 rows affected (0.00 sec)
Records: 2  Duplicates: 0  Warnings: 0mysql> select * from test;
+----+--------+
| id | name   |
+----+--------+
|  1 | 张三   |
|  2 | 李四   |
+----+--------+
2 rows in set (0.00 sec)mysql> grant select on test.test to 'X'@'localhost';
Query OK, 0 rows affected (0.00 sec)//X
mysql> use test;
Database changedmysql> select * from test;
+----+--------+
| id | name   |
+----+--------+
|  1 | 张三   |
|  2 | 李四   |
+----+--------+
2 rows in set (0.00 sec)mysql> delete from account;
mysql> ERROR 1142 (42000): DELETE command denied to user 'X'@'localhost' for table
'test'

2、回收权限

        语法:

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

        案例:

//root
mysql> revoke all on test.* from 'X'@'localhost';
Query OK, 0 rows affected (0.00 sec)mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec)//X
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
+--------------------+
1 row in set (0.00 sec)


http://www.hkcw.cn/article/PpcCYnGOHk.shtml

相关文章

PNG文件格式

文章目录 一、概述二、文件结构三、文件署名域四、数据块1、IDHR文件头数据块2、调色板数据块3、IDAT数据块4、IEND数据块 五、其他辅助数据块(了解即可)六、动态png——APNG 一、概述 PNG是20世纪90年代中期开始开发的图像文件存储格式,其目…

Python_day43

DAY 43 复习日 作业: kaggle找到一个图像数据集,用cnn网络进行训练并且用grad-cam做可视化 进阶:并拆分成多个文件 关于 Dataset 从谷歌图片中抓取了 1000 多张猫和狗的图片。问题陈述是构建一个模型,该模型可以尽可能准确地在图像…

【Quest开发】bug记录——Link界面无音频选项

此方法适用于这个不见了的情况 打开设备管理器,点击卸载 再到Oculus\Support\oculus-drivers找到oculus-driver点击重装驱动,重启电脑即可修复

汇编语言学习(二)——寄存器

目录 一、通用寄存器 二、数据存储 三、汇编指令 四、物理地址 五 、段寄存器 一、通用寄存器 在8086 CPU中,通用寄存器共有四个,分别是 AX、BX、CX 和 DX,它们通常用于存放一般性的数据,均为 16 位寄存器,可以存…

Error creating bean with name *.PageHelperAutoConfiguration 异常解析

一、问题报错 微服务安装成功,启动失败,报错如下: 二、 Spring Boot应用启动错误分析 错误概述 这是一个Spring Boot应用启动过程中出现的Bean创建错误。根据错误堆栈,主要问题在于无法创建PageHelper分页插件的自动配置类。 …

【Zephyr 系列 3】多线程与调度机制:让你的 MCU 同时干多件事

好的,下面是Zephyr 系列第 3 篇:聚焦 多线程与调度机制的实践应用,继续面向你这样的 Ubuntu + 真板实战开发者,代码清晰、讲解通俗、结构规范,符合 CSDN 高质量博客标准。 🧠关键词:Zephyr、线程调度、k_thread、k_sleep、RTOS、BluePill 📌适合人群:想从裸机开发进…

AI万能写作v1.0.12

AI万能写作是一款高度自动化、智能化、个性化的AI智能软件,旨在通过人工智能技术进行内容整合创作,为用户提供便捷高效的写作辅助。这款APP能够一键生成各类素材内容,帮助用户快速获取思路和灵感,成为写作、学习、工作以及日常生活…

【Linux网络篇】:HTTP协议深度解析---基础概念与简单的HTTP服务器实现

✨感谢您阅读本篇文章,文章内容是个人学习笔记的整理,如果哪里有误的话还请您指正噢✨ ✨ 个人主页:余辉zmh–CSDN博客 ✨ 文章所属专栏:Linux篇–CSDN博客 文章目录 一.三个预备知识认识域名认识URL认识URL编码和解码 二.http请求…

【JAVA后端入门基础001】Tomcat 是什么?通俗易懂讲清楚!

📚博客主页:代码探秘者 ✨专栏:《JavaSe》 其他更新ing… ❤️感谢大家点赞👍🏻收藏⭐评论✍🏻,您的三连就是我持续更新的动力❤️ 🙏作者水平有限,欢迎各位大佬指点&…

系统思考:成长与投资不足

最近认识了一位95后年轻创业者,短短2年时间,他的公司从十几个人发展到几百人,规模迅速扩大。随着团队壮大,用户池也在持续扩大,但令人困惑的是,业绩增长却没有明显提升,甚至人效持续下滑。尽管公…

PHP7+MySQL5.6 查立得轻量级公交查询系统

# PHP7MySQL5.6 查立得轻量级公交查询系统 ## 系统简介 本系统是一个基于PHP7和MySQL5.6的轻量级公交查询系统(40KB级),支持线路查询、站点查询和换乘查询功能。系统采用原生PHPMySQL开发,无需第三方框架,适合手机端访问。 首发版本&#x…

【笔记】Windows系统部署suna基于 MSYS2的Poetry 虚拟环境backedn后端包编译失败处理

基于 MSYS2(MINGW64)中 Python 的 Poetry 虚拟环境包编译失败处理笔记 一、背景 在基于 MSYS2(MINGW64)中 Python 创建的 Poetry 虚拟环境里,安装 Suna 开源项目相关包时编译失败,阻碍项目正常部署。 后端…

docker可视化工具

一、portainer(不常用) 1、安装portainer [rootlocalhost /]# docker run -d -p 8088:9000 --name portainer --restartalways -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data --privilegedtrue portainer/portainer-c…

#16 学习日志软件测试

#16 #13布置的任务都没有wanc 反思一下 一个是贪玩 一个是懒 还有一个原因是学习方式 单看视频容易困 然后是一个进度宝贝 java ai 编程 完 挑着看的 廖雪峰教程 完 速看 很多过时 javaweb ai笔记 见到13.aop 小林coding 看到4.并发 java guide 还没开始 若依框架 笔…

【数据集】NCAR CESM Global Bias-Corrected CMIP5 Output to Support WRF/MPAS Research

目录 数据概述🔍 数据集简介:🧪 数据处理方法:📅 时间范围(Temporal Coverage):📈 模拟情景(Scenarios):🌡️ 关键变量(Variables):📏 垂直层级(Vertical Levels):💾 数据格式与获取方式:数据下载及处理参考🌍 数据集名称: NCAR CESM Global B…

如何用AI写作?

过去半年,我如何用AI高效写作,节省数倍时间 过去六个月,我几乎所有文章都用AI辅助完成。我的朋友——大多是文字工作者,对语言极为敏感——都说看不出我的文章是AI写的还是亲手创作的。 我的AI写作灵感部分来自丘吉尔。这位英国…

dvwa4——File Inclusion

LOW: 先随便点开一个文件,可以观察到url栏变成这样,说明?page是dvwa当前关卡用来加载文件的参数 http://10.24.8.35/DVWA/vulnerabilities/fi/?pagefile1.php 我们查看源码 ,没有什么过滤,直接尝试访问其他文件 在url栏的pag…

mysql数据库实现分库分表,读写分离中间件sharding-sphere

一 概述 1.1 sharding-sphere 作用: 定位关系型数据库的中间件,合理在分布式环境下使用关系型数据库操作,目前有三个产品 1.sharding-jdbc,sharding-proxy 1.2 sharding-proxy实现读写分离的api版本 4.x版本 5.x版本 1.3 说明…

Doris环境部署与应用开发

部署的方式有几种,可以下载github上的源码编译,这里直接下载官方最新的二进制包,差不多有4G。 wget -c https://apache-doris-releases.oss-accelerate.aliyuncs.com/apache-doris-3.0.5-bin-x64.tar.gz tar -zxvf apache-doris-3.0.5-bin-x64.tar.gz mv apache-doris-3.0.…

Dify在Windows 11上的安装实战

一、引言 随着人工智能技术的飞速发展,大语言模型(LLM)的应用场景日益丰富,从智能客服到内容生成,再到复杂的数据分析,LLM正逐步渗透到各行各业。Dify,作为一个专注于AI应用开发的开源平台&…