MySQL----视图,用户

视图

概念
视图是一个虚拟表,其内容由查询定义,通过视图可以看到系统专门提供的数据,这样用户可以不看整个数据库表中的数据,而只关心对自己有用的数据。视图可以使用户的操作更方便,而且可以保障数据库系统的安全性。
同真实的表一样,视图包含一系列带有名称的列和行数据。视图的数据变化会影响到基表,基表的数据变化也会影响到视图

创建视图

create view (viewname) as (select语句);
在这里插入图片描述
show tables;可以看见该视图
在这里插入图片描述

视图修改与删除

  • 修改了视图数据,对基表数据有影响,反之修改基表数据,对视图数据有影响
    修改dept,test_view中deptno为10的均消失,反之同理在这里插入图片描述
  • 修改视图:alter view (viewname) as (select语句);
  • 删除视图:drop view (viewname);

视图规则和限制

视图规则和限制:

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

以下情况视图不能更新数据:

  • 视图中包含SUM()、COUNT()、MAX()和MIN()等函数;
  • 视图中包含UNION、UNION ALL、DISTINCT、GROUP BY和HAVING等关键字;
  • 视图对应的表存在没有默认值的列,而且该列没有包含在视图里;
  • 包含子查询的视图

用户

MySQL中的用户,都存储在系统数据库mysql的user表中,使用:use mysql,再select host,user,authentication_string from user可查看用户信息
在这里插入图片描述

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

desc user;
在这里插入图片描述

  • *_priv: 用户拥有的权限

创建和删除用户

注意:%可以再所有主机登录,(特定ip)只能在指定的主机登录, localhost只能在当前主机登录

  • 创建create user '(username)'@'(LoginHostname)/ip' identified by '密码';
    在这里插入图片描述
  • 删除:drop user 'username'@'LoginHostname
    注意 只输入username是不行的LoginHostname默认会使用%填充
    在这里插入图片描述
    在这里插入图片描述

修改用户密码

注意:各版本不同5.6,5.7有区别

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

用户授权

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

权限上下文
CREATECreate_priv数据库、表或索引
DROPDrop_priv数据库或表
GRANT OPTIONGrant_ priv数据库、表或保存的程序
REF ERENCESReferences_ priv数据库或表
ALTERAlter_ priv
DELETEDelete_ priv
INDEXIndex_ priv
INSERTInsert_ priv
SELECTSelect_ priv
UPDATEUpdate_ priv
CREATE VIEWCreate_ view_ priv视图
SHOW VIEWShow_ view_ priv视图
ALTER ROUTINEAlter_ routine_ priv保存的程序
CREATE ROUTINECreate_ routine priv保存的程序
EXECUTEExecute_ priv保存的程序
FILEFile_ priv服务器主机上的文件访问
CREATE TEMPORARY TABLESCreate tmp_ table_ priv服务器管理
LOCK TABLESLock_ tables_ priv服务器管理
CREATE USERCreate_ user_ priv服务器管理
PROCESSProcess_ priv服务器管理
RELOADReload_ priv服务器管理
REPLICATION CLIENTRepl_ client_priv服务器管理
REPLICATION SLAVERepl_ slave_ priv服务器管理
SHOW DATABASESShow_db_priv服务器管理
SHUTDOWNShutdown_ priv服务器管理
SUPERSuper_ priv服务器管理

此时test全都是N未授权
在这里插入图片描述

  • 赋予test1对于db1数据库的读取权限:grant 权限列表 on 库.对象名 to '用户名'@'登陆位置' [identified by '密码']
    (注意权限列表,多个权限用逗号分开)

    在这里插入图片描述
    在这里插入图片描述
  • grant all [privileges] on 表示赋予该用户在该对象上的所有权限
  • *.* : 代表本系统中的所有数据库的所有对象(表,视图,存储过程等) 库.* : 表示某个数据库中的所有数据对象(表,视图,存储过程等)
  • identified by可选。 如果用户存在,赋予权限的同时修改密码,如果该用户不存在,就是创建用户
  • 特定用户现有查看权限:show grants for 'username'@'LoginHostname';
    在这里插入图片描述
  • 如果发现赋权限后,没有生效,执行如下指令:flush privileges;

回收权限

revoke 权限列表 on 库.对象名 from '用户名'@'登陆位置';
在这里插入图片描述
重新登入test1;在这里插入图片描述

更多请参考:详细介绍MySQL中的用户与权限管理

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值