文章目录
- 视图
- 视图的规则
- 用户
- 用户信息
- 创建用户
- 删除用户
- 修改密码
- 用户权限
- 给用户授权
- 回收权限
视图
视图是一个虚拟表,其内容由查询定义。同真实的表一样,视图包含一系列带有名称的列和行数据。视图的数据变化会影响到基表,基表的数据变化也会影响到视图
也就是有时候一张表的列过多,不方便查看,我们就可以选取其中的某些列去生成一张虚拟表,这个虚拟表和原表之间是有着关联的,具体看一下如图现象
可以看到使用了 emp 表的empno和ename列去创建了一个视图,这个视图虽然是虚拟的但是也可以进行CRUD,并且原表更新数据后视图也会跟着更新,而视图更新后原表也会随着更新
视图的规则
- 与表一样,必须唯一命名(不能出现同名视图或表名)
- 创建视图数目无限制,但要考虑复杂查询创建为视图之后的性能影响
- 视图不能添加索引,也不能有关联的触发器或者默认值
- 视图可以提高安全性,必须具有足够的访问权限
- order by 可以用在视图中,但是如果从该视图检索数据 select 中也含有 order by ,那么该视图中的 order by 将被覆盖
- 视图可以和表一起使用
用户
用户信息
MySQL中的用户,都存储在系统数据库mysql的user表中
select * from user \G;
其中:
host: 表示这个用户可以从哪个主机登陆,如果是localhost,表示只能从本机登陆
user: 用户名
authentication_string: 用户密码通过password函数加密后的
*_priv: 用户拥有的权限
创建用户
create user '用户名'@'登陆主机/ip' identified by '密码';
可能实际在设置密码的时候,因为mysql本身的认证等级比较高,一些简单的密码无法设置,会爆出如下报错:
– ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
可自行搜索解决方案
ip如果设为 % 代表任何主机都可以登陆
删除用户
drop user '用户名'@'主机名';
修改密码
普通用户修改本身密码
set password=password('新的密码');
root用户修改指定用户密码
set password for '用户名'@'主机名'=password('新的密码');
用户权限
权限列表:
权限 | 列 | 上下文 |
---|---|---|
create | ._priv | 数据库、表、索引 |
drop | ._priv | 数据库、表 |
grant option | ._priv | 数据库、表、保存的程序 |
references | ._priv | 数据库、表 |
alter | ._priv | 表 |
delete | ._priv | 表 |
index | ._priv | 表 |
insert | ._priv | 表 |
select | ._priv | 表 |
update | ._priv | 表 |
create view | ._priv | 视图 |
show view | ._priv | 视图 |
alter routine | ._priv | 保存的程序 |
create routine | ._priv | 保存的程序 |
execute | ._priv | 保存的程序 |
file | ._priv | 服务器主机上的文件访问 |
create temporary tables | ._priv | 服务器管理 |
lock tables | ._priv | 服务器管理 |
create user | ._priv | 服务器管理 |
process | ._priv | 服务器管理 |
reload | ._priv | 服务器管理 |
replication client | ._priv | 服务器管理 |
replication slave | ._priv | 服务器管理 |
show databases | ._priv | 服务器管理 |
shutdown | ._priv | 服务器管理 |
super | ._priv | 服务器管理 |
给用户授权
刚创建的用户没有任何权限。需要给用户授权
grant 权限列表 on 库.对象名 to '用户名'@'登陆位置';
其中 all 代表所有权限,多个权限用逗号分开
. : 代表本系统中的所有数据库的所有对象(表,视图,存储过程等)
库. : 表示某个数据库中的所有数据对象(表,视图,存储过程等)*
如果发现赋权限后,没有生效,执行如下指令:
flush privileges;
回收权限
revoke 权限列表 on 库.对象名 from '用户名'@'登陆位置';