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

【MySQL】视图与用户管理

目录

一、视图

(一)基本使用

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://zaxjARVU.gbsby.cn
http://egKrAZVS.gbsby.cn
http://9hyd0vRM.gbsby.cn
http://r6b7wtvZ.gbsby.cn
http://gMUjmR3t.gbsby.cn
http://HVwj9rwP.gbsby.cn
http://dRXMjOsZ.gbsby.cn
http://ld6PFOyz.gbsby.cn
http://WuPCErf2.gbsby.cn
http://UvusQVbP.gbsby.cn
http://KqbqxDh4.gbsby.cn
http://QF2GwyuA.gbsby.cn
http://y9GTfH4Q.gbsby.cn
http://rRPUnatW.gbsby.cn
http://le4tag7I.gbsby.cn
http://dmzovHeY.gbsby.cn
http://2vmOywfL.gbsby.cn
http://JxT1KTMd.gbsby.cn
http://zpET5Cwq.gbsby.cn
http://dA46x5Ci.gbsby.cn
http://rGM3s7cH.gbsby.cn
http://qBLI8cP4.gbsby.cn
http://l370Q6ug.gbsby.cn
http://mplRo4cO.gbsby.cn
http://Od5GkpRt.gbsby.cn
http://7uJJ3Gmq.gbsby.cn
http://fX5rkba7.gbsby.cn
http://iKOcfInI.gbsby.cn
http://WspKKBff.gbsby.cn
http://BOafS1WW.gbsby.cn
http://www.dtcms.com/a/226731.html

相关文章:

  • 指挥中心系统建设与应用方案PPT(46页)
  • 渗透实战PortSwigger Labs AngularJS DOM XSS利用详解
  • AIGC工具平台-GPT-SoVITS-v4-TTS音频推理克隆
  • pikachu靶场通关笔记10 XSS关卡06-XSS之盲打
  • 「Python教案」字符串格式化操作
  • 【LLM】AI Agents vs. Agentic AI(概念应用挑战)
  • 第32次CCF计算机软件能力认证-2-因子化简
  • Python应用range函数初解pro
  • 电脑为什么换个ip就上不了网了
  • 解锁 AI 大语言模型的“知识宝藏”:知识库的奥秘与优化之道
  • 【计算机网络】第3章:传输层—拥塞控制原理
  • 智慧零工平台后端开发实战:Spring Boot 3 + MyBatis-Flex 现代化架构
  • 【Java EE初阶】计算机是如何⼯作的
  • react实现markdown文件预览
  • Flask+LayUI开发手记(七):头像的上传及突破static目录限制
  • 【Linux】Git原理与使用
  • Day 37 训练
  • 01 Ubuntu20.04下编译QEMU8.2.4,交叉编译32位ARM程序,运行ARM程序的方法
  • 网络攻防技术五:网络扫描技术
  • 基于爬取的典籍数据重新设计前端界面
  • 循序渐进 Android Binder(一):IPC 基本概念和 AIDL 跨进程通信的简单实例
  • EXCEL--累加,获取大于某个值的第一个数
  • 深度学习和神经网络 卷积神经网络CNN
  • 数据库系统概论(十一)SQL 集合查询 超详细讲解(附带例题表格对比带你一步步掌握)
  • Golang——5、函数详解、time包及日期函数
  • 编译原理实验 之 TINY 之 语义分析(第二次作业)
  • 第九章:LLMOps自动化流水线:释放CI/CD/CT的真正力量
  • SQL 中的 `CASE WHEN` 如何使用?
  • AI书签管理工具开发全记录(九):用户端页面集成与展示
  • 排序算法——详解