MySQL视图&用户管理

文章目录

  • 视图
  • 视图的规则
  • 用户
    • 用户信息
    • 创建用户
    • 删除用户
    • 修改密码
  • 用户权限
    • 给用户授权
    • 回收权限

视图

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

也就是有时候一张表的列过多,不方便查看,我们就可以选取其中的某些列去生成一张虚拟表,这个虚拟表和原表之间是有着关联的,具体看一下如图现象

MySQL视图&用户管理_第1张图片

可以看到使用了 emp 表的empno和ename列去创建了一个视图,这个视图虽然是虚拟的但是也可以进行CRUD,并且原表更新数据后视图也会跟着更新,而视图更新后原表也会随着更新

MySQL视图&用户管理_第2张图片

视图的规则

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

用户

用户信息

MySQL中的用户,都存储在系统数据库mysql的user表中

select * from user \G;

MySQL视图&用户管理_第3张图片

其中:

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 '用户名'@'登陆位置';

你可能感兴趣的:(MySQL,mysql,android,adb)