上海做网站站优云一一十六湘潭手机网站
上海做网站站优云一一十六,湘潭手机网站,文旅部:不随意关停娱乐场所,怎么重启网站服务器视图 前言正式开始视图用户管理user表创建新用户修改用户密码权限管理给用户赋权剥夺权限 前言
本篇所讲的视图和我上一篇事务中所讲的读视图不是一个东西#xff0c;二者没有任何关系#xff0c;如果看过我前一篇博客的同学不要搞混了。
其实视图和用户管理本来是想着分开… 视图 前言正式开始视图用户管理user表创建新用户修改用户密码权限管理给用户赋权剥夺权限 前言
本篇所讲的视图和我上一篇事务中所讲的读视图不是一个东西二者没有任何关系如果看过我前一篇博客的同学不要搞混了。
其实视图和用户管理本来是想着分开来说的不过两个的内容都比较少就直接放一块讲了。
正式开始
视图
视图其实很简单理解是一个虚拟表其内容由查询定义。
语法
create view 视图名 as select语句;来个例子用我前面博客中创建的两张表
当前这个库中有三张表除了上面的dept和emp还有一个salgrade不过这个表后面用不上 我前面讲过建表对应到系统中就是在建文件
这里存储引擎是InnoDB的所以每个表对应两个文件一个.frm为存储表结构的文件一个.ibd为存储索引和数据的文件。
这里用emp和dept这两张表进行内连接连接条件为两表中的deptno相等取出其中的enmae列和dname列
但是如果我想要高频的查找这两列数据的话每次都要高很长的sql比较麻烦那么就可以用视图来创建一个虚拟的表结构
可以看到创建一个视图就相当于是创建了一张表我们可以对myview这个视图进行查看用起来就像表一样
那么也会在对应的路径下产生相应的文件
不过这里创建视图后只产生了一个.frm文件也就是只有一个存储表结构的文件。
那存储表中数据的文件在哪里呢 其实就是emp和dept的.ibd文件视图和基表中的数据是同步的。
像emp表和dept表都是基表。
当我对视图中的数据进行修改
可以看到基表中的数据也被改了看一下emp基表
可以看到被修改了。
那么我再改一下dept表中的数据
可以看到也修改了。
同真实的表一样视图包含一系列带有名称的列和行数据。视图的数据变化会影响到基表基表的数据变化也会影响到视图。
如果想要删除视图用drop 视图规则和限制 与表一样必须唯一命名不能出现同名视图或表名创建视图数目无限制但要考虑复杂查询创建为视图之后的性能影响视图不能添加索引也不能有关联的触发器或者默认值视图可以提高安全性必须具有足够的访问权限尽量不要在视图中用order by视图可以和表一起使用 用户管理
user表
在数据库刚装好后会有几个库是自带的比如说mysql、sys等
这几个库中的表不要随便删小心出问题我记得我不久前把db_1整个库给删了研究了半天最后重新下了mysql才搞好的。
这些库中有很多表结构。
MySQL在登录的时候也要记录下来哪些用户允许使用MySQL哪些用户不允许使用MySQL而这些信息也是要在MySQL中的特定表结构中保存下来的而这个表就是上图中mysql库中的user表
看一下这个表中都有什么内容里面的字段有点多横着打印看不全先截出来一部分
其实很多字段都没必要看看下面的这三个就行
host 表示这个用户可以从哪个主机登陆如果是localhost表示只能从本机登陆user 用户名authentication_string 用户密码通过password函数加密后形成的密文这一点在我前面的博客中也讲过就是通过hash来给你的密码进行加密不明文存放密码登录的时候只需要再次经过相同的哈希算法来比较库中存放的结果上面的一堆*_priv 用户拥有的权限
图中root用户就是默认的超级用户这个就不说了吧。 关于session和sys用户 sessionMySQL5.7新增用户用于用户身份验证。 sysMySQL5.7新增用户用于系统模式对象的定义防止DBA数据库管理员重命名或删除root用户时发生错误。 默认情况下用户mysql.session和mysql.sys已被锁定,使得数据库操作人员无法使用这两个用户通过客户端连接MySQL服务器.因此,建议不要随意解锁和使用mysql.session和mysql.sys用户. ———————————————— 版权声明本文为CSDN博主「是乔乔啊」的原创文章遵循CC 4.0 BY-SA版权协议转载请附上原文出处链接及本声明。 原文链接https://blog.csdn.net/qq_24889005/article/details/107590471 上面我是设置好了只有一个root用户如果我现在想用其他名字来登录是不行的
不管有没有密码都是认证失败的。
如果我们只能使用root用户这样存在安全隐患。这时就需要使用MySQL的用户管理像下面图中这样给某个用户特定的权限只能访问部分库
这就是用户管理。
下面来说说如何添加新用户。
创建新用户
语法
create user 用户名登陆主机/ip identified by 密码;其中后面跟的是你想要新创建出来的用户在哪台主机上可以登陆必须得指定可以理解为’用户名’登陆主机/ip’是搭配在一块的。
演示 这里创建一个名字为张三的用户登录主机的IP是localhost也就是只能我本机登录。
可以看到创建一个用户就是在对应user表中添加一条记录那么其实我们也可以直接往这个表中暴力插入一条用户记录是可以登录的不过表中的列太多了这样搞着很麻烦不如直接用create user同样的效果就是插入一条记录。
这里只是为了让你明白创建用户、删除用户、修改用户信息等操作就是在user表中做增删改。
新用户创建好了之后必须得用flush privileges刷新一下 登录
成功。
我这里Windows下也安装有mysql测试一下远端登录 -P后面跟的是端口号我这里就不把我的端口号给出来了不要轻易的把你mysql服务器的端口号暴露到公网上。
可以看到这里登录失败了上面说我这里的IP不允许登录我云服务器上的mysql。意思就是我不能进行远端登录。
那我来创建一个能远端登录的用户 %表示所有主机都能登录这样搞是因为你远端登录的时候可能换一个网IP就会改变一变就要再设置一下指定IP但是这样比较麻烦。用%更方便一点但是不推荐这样做。 可以通过netstat来查看我当前Windows下的连接
所以说mysql支持远端登录但是登录时要有远端账户才可以。
修改用户密码
再说一下password函数这其实就是一个hash函数可以将一个字符串转换成一段定长字符串 可以看到就算是相差一个字符结果都会有很大变化。
库中存放的都是这些加密后的字符串这样做就是为了防止数据库泄漏之后像密码这样的重要信息不会丢失。
设置密码的语法有两种一种是自己给自己设置密码
set passwordpassword(新的密码);还有一种是root用户修改指定用户的密码
set password for 用户名IPpassword(新密码);root改刚刚的张三
不过Linux下不会回显密码这里眼看不出来改没改密码反正使用qwer登录的
张三自己改自己
也可以直接让user对表中的authentication_string做修改
也是可以登录的这里改的是tmp我直接远端登 这里Windows下能看到有登录的密码有四个字符。
权限管理
MySQL数据库提供的权限列表
我在win下用tmp用户登录查看库的时候只有部分库能够看到
因为tmp没有其他库的权限所以是看不到的。
而root就可以看到所有的库
因为root的权限很高。
普通用户想要看到库的话得要有对应的权限。
给用户赋权
语法
grant 权限列表 on 库.对象名 to 用户名登陆位置 [identified by 密码];其中权限列表可以直接给all也可以指定某些权限一般都是CURD操作的权限。
on库.对象名表示对哪个库下的哪张表进行赋权如果想要对所有库下的所有表进行赋权就可以用*.*如果想要对某个库下的所有表进行赋权可以用库名.*。
to表示给哪个用户赋权。
后面的identified by 密码’可以不用写。如果写了且用户存在赋予权限的同时会修改密码,如果该用户不存在就是创建用户。
我来用root账户创建一个库
用tmp用户是看不到的
还是和刚刚一样。
强行use一下
而且当前这个tmp用户还没法创建库
用root给tmp赋权刚刚的rootDB 这里意思就是给rootDB库中的所有表赋权。
现在用tmp就能看到rootDB库了
选中也没问题 不过里面还没有创建表。
因为有所有的权限tmp可以直接在里面创建表
root此时也是能看到这张表的
用root来插入两条记录 tmp查看
没有问题。
在root下可以查看特定用户的权限
第一条可以不看所有的用户都会有。
第二条GRANT ALL PRIVILEGES ON rootDB.* TO ‘tmp’‘%’就是刚刚给tmp赋权的操作。
普通用户可以看自己有哪些权限
但是不能看其他用户的
剥夺权限
这里tmp有所有的权限用tmp插入一下
如果不想让这个用户进行插入可以去掉其插入的权限也就是说root可以剥夺普通用户的权限。
语法
revoke 权限列表 on 库.对象名 from 用户名登陆位置;可以剥夺指定权限比如说剥夺insert
不能插入了但是还是能查的
再来查看一下当前的权限
蹦出来了一堆。
因为刚刚是所有的权限都有这里将一个insert权限去除查的时候是不会有insert的但是其他的权限还要显示。可以看到上面没有insert。
也可以直接剥夺所有权限 此时tmp用户就看不到rootDB库了
show一下 没有任何权限。
这就是用户管理看了这篇之后就可以用root创建一个用户然后用root创建一个库给新用户赋权后续就可以用这个普通用户来进行对特定库的操作了相对来说更加安全。
到此结束。。。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/87867.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!