Mysql视图特性&&用户管理

目录

一、视图基本使用

二、用户管理

2.1 用户

①用户信息

②创建用户

tips:(解决无法创建用户)

③删除用户

④修改用户密码

2.2数据库的权限

①给用户授权

②回收权限

视图:视图是一种虚拟表。视图是基于一个或多个基础表中的数据所创建的一个查询结果集。视图本身并不包含数据,而是通过基础表中的数据计算出来的结果集。视图包含一系列带有名称的列和行数据。视 图的数据变化会影响到基表,基表的数据变化也会影响到视图。

一、视图基本使用

🖊创建视图

        ​​​​​​​create  view 视图名 as select 语句;

案例:

修改视图,会影响基表的数据:

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

🖊删除视图:

drop view 视图名;

视图规则与限制:

🖊与表一样,必须唯一命名(不能出现同名视图或表名)

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

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

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

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

🖊视图可以和表一起使用

二、用户管理

如果我们只能使用root用户,这样存在安全隐患。这时,就需要使用Mysql的用户管理。

张三只能操纵mytest这个库,李四只能操纵msg这个库。如果给他们root账户,那么他们就可以操纵所有的库,风险太大。

2.1 用户

①用户信息

Mysql中的用户,都存储在系统数据库Mysql的user表中。

可以通过desc user详细看一下表结构。

字段解释:

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

🖊user : 用户名

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

🖊*_priv: 用户拥有的权限

②创建用户

语法:

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

案例:

此时我们看到新增了用户Gyh,这时便可以使用新账号新密码进行登陆了。

tips:(解决无法创建用户)

如果新增用户时出现报错:

出现这个报错,说明设置你的my.cnfmy.cni的配置中,你在[mysqld]下是设置了

skip-grant-tables

设置了这一条,在登陆mysql时是不需要密码登陆的。但是我们不能在mysql中新增用户了。那么要怎么操作呢?

首先在my.cnfmy.cni文件中删除'skip-grant-tables'这一行

重启mysql服务:

systemctl  restart  mysqld;

获取临时密码:

sudo  grep  'temporary password'  /var/log/mysqld.log

获取临时密码是因为我们已经关闭了无需密码登录mysql,所以需要获取临时密码来登录MySQL

利用临时密码登录,在MySQL界面:

alter  user  'root'@'localhost'  identified  by  'password';

如果出现这样的报错:

之所以出现这样的报错,是因为mysql用户设置密码安全强度默认要求为中,即1,要求必须包含数字、符号、大小写字母,长度至少为8位

说明我们刚刚设置的密码强度太低,可以设置密码强度要求:

这样密码要求强度就下来了,不过不太建议这么设置。

ok,在经历了这些设置之后,我们就可以新增用户,并且设置简易的密码了!

③删除用户

语法:

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

示例:

④修改用户密码

语法:

        🖊自己改自己密码:

        set  password = password('新的密码');

        🖊root用户修改指定用户的密码:

        set password for '用户名'@'主机名'=password('新的密码');

2.2数据库的权限

mysql数据库提供的权限列表:

①给用户授权

刚创建的用户没有任何权限。需要给用户授权。

语法:

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

说明:

🖊权限列表,多个权限用逗号分开

        grant  select  on  ...

        grant  select, delete, create on  .....

        grant  all  [privileges]  on  ...   --表示赋予该用户在该对象上的所有权限 

🖊 *.* :代表本系统中的所有数据库的所有对象 (表,视图,存储过程等)

🖊 库.* :表示某个数据库中的所有数据对象(表,视图,存储过程等)。

🖊 identified by 可选。如果用户存在,赋予权限的同时修改密码,如果该用户不存在,就是创建用户。

案例:

--使用root用户

 

给用户Gyh赋予test_db 数据库下所有文件的select权限:

开启另一个终端,登上Gyh用户查看:

因为我们只授予了Gyh用户select权限对test_db这个库

 

 

如果发现赋权限后,没有生效,执行:

flush  privileges; 

②回收权限

语法:

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

示例:

回收Gyh对test_db数据库的所有权限:

 

在Gyh的终端查看:

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值