MySQL如何创建视图和用户

Posted 两片空白

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL如何创建视图和用户相关的知识,希望对你有一定的参考价值。

目录

一.视图

        1.1 概念

        1.2 使用

        1.3 视图的规则和限制

二.用户管理

        2.1 用户

        2.1.1 用户信息

        2.1.2 创建用户

         2.1.3 删除用户

         2.1.4 修改密码

         2.2 数据库权限

         2.2.1 给用户授权

        2.2.2 回收权限


一.视图

        1.1 概念

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

        简单来说,一个表的中的数据太大了,通过查询条件来建立一张子表。修改子表的数据会影响主表,修改主表的数据会影响到子表。

        1.2 使用

  • 创建视图

        在当前数据库中形成一个新的表结构。

语法:create  view  视图名  as select .....

案例:

在当下数据库形成新的表结构:

  •  修改视图

        修改视图,基表也会发生变化。

  •  修改基表

        修改基表,视图也会发生变化。

  •  删除视图

语法:drop  view  视图名;

        1.3 视图的规则和限制

  • 和表一样,必须唯一命名。

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

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

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

  • order by用在视图中。

  • 视图可以和表一起使用。

二.用户管理

        我们现在使用的是root用户,root用户权限太大。可以操作所有的库,由于权限大,导致风险过大。如果进行了误操作,导致损失严重。

        于是就需要使用mysql的用户管理。一个用户只能操作特定的库,并且也只具有特定的权限。

        2.1 用户

        2.1.1 用户信息

        MySQL中的用户都保存在系统数据库MySQL的user表中。

字段解释:

  • host:表示这个用户可以重哪个主机登录。localhost,表示只能从本机登录。%表示从任意远端登录。
  • user:用户名
  • authentication_string:用户密码,通过password函数加密的
  • *_priv:用户拥有的权限。

        2.1.2 创建用户

        注意:创建用户需要root来做。

语法:create  user  '用户名'@'登录主机/ip'  identified  by '密码';

案例:

         2.1.3 删除用户

语法:drop user '用户名'@'主机名';

案例:

         2.1.4 修改密码

  • 自己改自己的密码

语法:set  password=password('新的密码');(该语法在MySQL8.0以上已经不适用)

  • root用户指修改指定用户密码

语法:set  password  for  '用户名'@'主机名'=password('新的密码');(该语法在MySQL8.0以上已经不适用)。

  • root修改指定用户密码(8.0版本以上)

语法:alter user '用户名'@'主机名' identified  with  mysql_native_password by '新密码';

         2.2 数据库权限

        root用户拥有所有的权限。

         2.2.1 给用户授权

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

语法:grant  权限列表  on  库.对象名(表名)  to  '用户名'@'主机名        '  [identified  by  '密码'];

说明:

  • 权限列表,多个权限用逗号隔开。

grant  select  on ......

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

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

  • *.*:表示本系统中的所有数据库的所有对象(表)。
  • 库.*:表示某个数据库中的所有数据对象。
  • identified  by 可选。如果用户存在,赋予权限的同时修改密码,如果该用户不存在,就是创建用户。

案例:

  • 授权

  •  使用权限

  •  查看用户现有的权限

 注意:如果发现赋权后没有生效,执行如下命令:

flush  privileges;

        2.2.2 回收权限

语法:revoke 权限列表 on 库名.对象  from '用户名'@'主机号';

 

以上是关于MySQL如何创建视图和用户的主要内容,如果未能解决你的问题,请参考以下文章

MySQL视图的优缺点以及如何创建视图

如何在 MySql 查询中为类似 Instagram 的帖子创建视图?

如何在MySQL中利用数据库表创建视图

sql 如何查看视图的创建用户?

MySQL----视图,用户

MySQL----视图,用户