• MySQL视图&用户管理


    视图

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

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

    image-20230907173806506

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

    image-20230907174354223

    视图的规则

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

    用户

    用户信息

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

    select * from user \G;
    
    • 1

    image-20230907184058271

    其中:

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

    创建用户

    create user '用户名'@'登陆主机/ip' identified by '密码';
    
    • 1

    可能实际在设置密码的时候,因为mysql本身的认证等级比较高,一些简单的密码无法设置,会爆出如下报错:
    – ERROR 1819 (HY000): Your password does not satisfy the current policy requirements

    可自行搜索解决方案

    ip如果设为 % 代表任何主机都可以登陆

    删除用户

    drop user '用户名'@'主机名';
    
    • 1

    修改密码

    普通用户修改本身密码

    set password=password('新的密码');
    
    • 1

    root用户修改指定用户密码

    set password for '用户名'@'主机名'=password('新的密码');
    
    • 1

    用户权限

    权限列表:

    权限上下文
    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 '用户名'@'登陆位置';
    
    • 1

    其中 all 代表所有权限,多个权限用逗号分开

    . : 代表本系统中的所有数据库的所有对象(表,视图,存储过程等)
    库.
    : 表示某个数据库中的所有数据对象(表,视图,存储过程等)
    *

    如果发现赋权限后,没有生效,执行如下指令:

    flush privileges;
    
    • 1

    回收权限

    revoke 权限列表 on.对象名 from '用户名'@'登陆位置';
    
    • 1
  • 相关阅读:
    canvas 基础 和 动图案例
    Flutter(学前必看)基础
    手机基带芯片往事
    基于微前端qiankun的多页签缓存方案实践
    C++(第八篇):vector类容器(介绍、使用、模拟实现及迭代器失效问题)
    Java 注解与反射
    github Copilot的使用总结
    JS变量先使用后定义
    排序算法,冒泡排序算法及优化,选择排序SelectionSort,快速排序(递归-分区)
    我们为什么要做一名系统管理员?
  • 原文地址:https://blog.csdn.net/CHJBL/article/details/132744688