MySQL----视图,用户

Posted 4nc414g0n

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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中的用户与权限管理

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

MySql 视图

sql 视图 存储过程 的区别?

MySQL视图花费太多时间来选择数据

Android - 从 mysql 数据库中查看更多旧数据(不是图像),当在列表视图中滚动底部时

ex24更多练

mysql使用技巧 行类视图子查询