【数据库】MySQL视图 | 用户管理

文章目录

  • 1 :peach:视图:peach:
    • 1.1 :apple:基本使用:apple:
      • 1.1.1 :lemon:创建视图:lemon:
      • 1.1.2 :lemon:案例:lemon:
      • 1.1.3 :lemon:删除视图:lemon:
    • 1.2 :apple:视图规则和限制:apple:
  • 2 :peach:用户管理:peach:
    • 2.1 :apple:用户信息:apple:
    • 2.2 :apple:创建用户:apple:
    • 2.3 :apple:删除用户:apple:
    • 2.4 :apple:修改用户密码:apple:
    • 2.5 :apple:数据库的权限:apple:
      • 2.5.1 :lemon:给用户授权:lemon:
      • 2.5.2 :lemon:回收权限:lemon:


1 🍑视图🍑

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

1.1 🍎基本使用🍎

1.1.1 🍋创建视图🍋

create view 视图名 as select语句

1.1.2 🍋案例🍋

create view v_ename_dname as select ename, dname
from EMP, DEPT where EMP.deptno=DEPT.deptno;

查看v_ename_dname

select * from v_ename_dname order by dname;
+--------+------------+
| ename | dname |
+--------+------------+
| CLARK | ACCOUNTING |
| KING | ACCOUNTING |
| MILLER | ACCOUNTING |
| SMITH | RESEARCH |
| JONES | RESEARCH |
| SCOTT | RESEARCH |
| ADAMS | RESEARCH |
| FORD | RESEARCH |
| ALLEN | SALES |
| WARD | SALES |
| MARTIN | SALES |
| BLAKE | SALES |
| TURNER | SALES |
| JAMES | SALES |
+--------+------------+

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

select emp.ename,dept.dname,dept.deptno from emp,dept where
emp.deptno=dept.deptno order by dname;
update v_ename_dname set ename='TEST' where ename='CLARK';
select * from EMP where ename='CLARK';
select * from EMP where ename='TEST';

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

mysql> update EMP set deptno=10 where ename='JAMES'; -- 修改基表
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0
mysql> select * from v_ename_dname where ename='JAMES';
+-------+----------+
| ename | dname |
+-------+----------+
| JAMES | RESEARCH | <== 视图中的数据也发生了变化
+-------+----------+

1.1.3 🍋删除视图🍋

drop view 视图名

1.2 🍎视图规则和限制🍎

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

2 🍑用户管理🍑

2.1 🍎用户信息🍎

MySQL中的用户,都存储在系统数据库mysqluser表中:
在这里插入图片描述字段解释:

  • host: 表示这个用户可以从哪个主机登陆,如果是localhost,表示只能从本机登陆;
  • user: 用户名;
  • authentication_string: 用户密码通过password函数加密后的;

2.2 🍎创建用户🍎

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

案例:
比如我们创建一个grm的用户,并且只允许该用户在本地登录:
在这里插入图片描述
此时再查看user表中内容:
在这里插入图片描述
所以现在我们就可以使用普通用户的身份进行登录了。

2.3 🍎删除用户🍎

语法:

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

这里我就不删除了。

2.4 🍎修改用户密码🍎

语法:

  • 自己改自己密码:
set password=password('新的密码');
  • root用户修改指定用户的密码:
set password for '用户名'@'主机名'=password('新的密码');

2.5 🍎数据库的权限🍎

由于前面我们已经创建了普通用户grm,所以当我们使用普通用户的身份去查看当前存在哪些数据库的时候:
在这里插入图片描述
我们惊讶的发现居然只有一个数据库,之前不是创建了很多数据库的吗?其实这就是权限问题了,之前的数据库全部都是在root用户下创建的,而普通用户是没有root用户权限的,所以这也就导致了为什么在普通用户下看到的数据库要少些,那么我们应该采取怎样的措施呢?

2.5.1 🍋给用户授权🍋

语法:

grant 权限列表 on.对象名 to '用户名'@'登陆位置' [identified by '密码']

说明:
权限列表,多个权限用逗号分开:

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

补充:MySQL数据库提供的权限列表

权限上下文
createCreate_priv数据库/表/索引
dropDrop_priv数据库/表
grant optionGrant_priv数据库/表/保存的程序
referencesReferences_priv数据库/表
alterAlter_priv
deleteDelete_priv
indexIndex_priv
insertInsert_priv
selectSelect_priv
updateUpdate_priv
create viewCreate_view_priv视图
show viewShow_view_priv视图

使用all将添加所有权限。
现在要给grm用户添加数据库db1所有表的select权限:

grant select on db1.* to 'grm'@'localhost';

此时在grm用户下就能够拥有对数据库db1所有表的select权限:
在这里插入图片描述
此刻想要在grm用户下向account表中插入数据是不被允许的,我们可以为grm用户增加向account表中插入的权限:

grant insert on db1.account to 'grm'@'localhost';

此时在grm用户下:
在这里插入图片描述
便能够插入数据啦!
当然还可以增加其他的权限,在上面列出的权限列表都可以增加。
那我们能够通过什么方式比较直观的看见grm用户的权限吗?
可以使用下面这种方式:
在这里插入图片描述
补充:当发现赋权限后,没有生效,执行指令flush privileges;

2.5.2 🍋回收权限🍋

语法:

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

但是要注意一点:当该用户没有该权限时而去回收该权限会报错。
我们可以使用all回收所有权限,但是一般来说不会这么使用。

我们先向grm用户增加db1数据库中account表的所有权限,然后再去掉对account的select权限:
在这里插入图片描述
在这里插入图片描述
此时在grm用户下就不能够select account表中数据了:
在这里插入图片描述


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

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

相关文章

SocketWeb实现小小聊天室

SocketWeb实现小小聊天室 消息推送的常见方式轮询长轮询SSE&#xff08;server-sent event&#xff09;&#xff1a;服务器发送事件WebSocketWebSocket简介WebSocket API 实现小小聊天室实现流程消息格式客户端-->服务端服务端-->客户端 消息推送的常见方式 轮询 浏览器…

皓学IT:WEB05-Servlet

一、Servlet 1.1.概述 Servlet是SUN公司提供的一套规范&#xff0c;名称就叫Servlet规范&#xff0c;它也是JavaEE规范之一。我们可以像学习Java基础一样&#xff0c;通过API来学习Servlet。这里需要注意的是&#xff0c;在我们之前JDK的API中是没有Servlet规范的相关内容&am…

“智能语音指令解析“ 基于NLP与语音识别的关键工单信息提取,

"智能语音指令解析" 基于NLP与语音识别的关键工单信息提取&#xff0c; 1. 背景介绍1.1 场景痛点1.2 方案选型 2. 准备开发环境3. PaddleSpeech 语音识别快速使用4. PaddleNLP 信息抽取快速使用5. 语音工单信息抽取核心功能实现6. 语音工单信息抽取网页应用6.1 网页前…

TLS1.2抓包解析

1.TLS1.2记录层消息解析 Transport Layer SecurityTLSv1.2 Record Layer: Handshake Protocol: Client HelloContent Type: Handshake (22)Version: TLS 1.0 (0x0301)Length: 253Content Type&#xff1a;消息类型&#xff0c;1个字节。 i 0Version&#xff1a;协议版本&…

斯坦福大学为机器人操作模仿学习设计了示教新范式

近期斯坦福大学提出了通用操纵界面&#xff08;UMI&#xff09;–一种数据收集和策略学习框架&#xff0c;可将人类演示的技能直接转移到可部署的机器人策略中。 https://umi-gripper.github.io/ UMI 采用手持式抓手和精心的界面设计&#xff0c;可为具有挑战性的双臂和动态操…

Unity接入SQLite (一):SQLite介绍

1.简介 SQLite是一个开源的嵌入式关系数据库管理系统。它是一种轻量级的数据库引擎&#xff0c;不需要单独的服务器进程&#xff0c;可以直接嵌入到应用程序中使用。Sqlite使用简单、高效&#xff0c;并且具有对标准SQL的完整支持。它适用于需要在本地存储和访问数据的应用程序…

Windows下用CMake编译VTK及配置测试

作者&#xff1a;翟天保Steven 版权声明&#xff1a;著作权归作者所有&#xff0c;商业转载请联系作者获得授权&#xff0c;非商业转载请注明出处 VTK是什么&#xff1f; VTK&#xff08;visualization toolkit&#xff09;是一个开源的免费软件系统&#xff0c;主要用于三维计…

Base64 编码 lua

Base64 编码 -- Base64 字符表 local base64_chars { A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z, a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,…

C#,动态规划(DP)N皇后问题(N Queen Problem)的回溯(Backtracking)算法与源代码

1 N皇后问题&#xff08;N Queen Problem&#xff09; 在N*N的方格棋盘放置了N个皇后&#xff0c;使得它们不相互攻击&#xff08;即任意2个皇后不允许处在同一排&#xff0c;同一列&#xff0c;也不允许处在与棋盘边框成45角的斜线上。 2 回溯算法 回溯算法实际上一个类似枚…

Linux软件高级编程-进程基本概念--day6

1.进程&#xff1a; 程序&#xff1a; 存放在外存的一段数据组成的文件 进程&#xff1a; 是一个程序动态执行的过程&#xff0c;包括进程的创建、进程的调度、进程的消亡 2.进程相关命令&#xff1a; 1&#xff09;top&#xff1a; 动态查看当前系统中所有进程信息&#xff08…

(Linux学习一):Mac安装vmWare11.5,centOS 7安装步骤教程

一。下载vmware 官网地址&#xff1a;下载地址 由于我的电脑系统是Mac 10.15.6版本系统&#xff0c;我下载的是VMware Fusion 11.5版本&#xff0c;13是最新版本不支持安装需要系统在11以上。 百度网盘下载地址: VMware Fusion 11 VMware Fusion 12 VMware Fusion 13 下载需要…

万界星空科技商业开源MES

一、万界星空科技商业开源MES系统概述&#xff1a; 万界星空科技免费MES、开源MES、商业开源MES、市面上最好的开源MES、MES源代码、适合二开的开源MES。 1.万界星空开源MES制造执行系统的Java开源版本。 开源mes系统包括系统管理&#xff0c;车间基础数据管理&#xff0c;计…