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数据库提供的权限列表:
权限 列 上下文 CREATE Create_priv 数据库、表或索引 DROP Drop_priv 数据库或表 GRANT OPTION Grant_ priv 数据库、表或保存的程序 REF ERENCES References_ priv 数据库或表 ALTER Alter_ priv 表 DELETE Delete_ priv 表 INDEX Index_ priv 表 INSERT Insert_ priv 表 SELECT Select_ priv 表 UPDATE Update_ priv 表 CREATE VIEW Create_ view_ priv 视图 SHOW VIEW Show_ view_ priv 视图 ALTER ROUTINE Alter_ routine_ priv 保存的程序 CREATE ROUTINE Create_ routine priv 保存的程序 EXECUTE Execute_ priv 保存的程序 FILE File_ priv 服务器主机上的文件访问 CREATE TEMPORARY TABLES Create tmp_ table_ priv 服务器管理 LOCK TABLES Lock_ tables_ priv 服务器管理 CREATE USER Create_ user_ priv 服务器管理 PROCESS Process_ priv 服务器管理 RELOAD Reload_ priv 服务器管理 REPLICATION CLIENT Repl_ client_priv 服务器管理 REPLICATION SLAVE Repl_ slave_ priv 服务器管理 SHOW DATABASES Show_db_priv 服务器管理 SHUTDOWN Shutdown_ priv 服务器管理 SUPER Super_ 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----视图,用户的主要内容,如果未能解决你的问题,请参考以下文章