zoukankan      html  css  js  c++  java
  • Mysql(11)_Mysql权限与安全

    1   创建用户z1并且赋予所有数据库上的所有表的select权限,可以看到,user表中的select_priv是Y,而db表并没有记录。也就是说,对所有数据库都拥有相同权限的用户不需要记录db表。而仅需把user表中的select_priv改为Y即可。

    use mysql;
    select * from host;
    select * from user;
    select * from db;
    -- user 表中主要有用户列、权限列。其中权限列又分为普通权限和管理权限。普通权限主要用来对数据库进行操作 
    -- 比如select_priv,create_priv等 而管理权限主要用来对数据库进行管理的操作,比如process_priv 以及super_priv等
    
    -- 创建用户z1,并赋予所有数据库上的所有表的select权限
    create user z1;
    grant select on *.* to z1;


     2 、将z1上的权限改为只对test1数据库上所有表的select权限,这个时候,发现user表中select_priv变成了N,但是db表中增加了一条test01的记录。从这个例子可以看出,进行权限分配和用户通过权限认证,先user->db->tables_priv->column_priv
          2.1 即先检查全局权限表user,如果对应的权限为Y,则此用户对所有数据库的权限都为Y,将不再检查db,tables_priv和columns_priv这些表(对所有的数据库中所有的表都一样)

          2.2  如果user表为N,则到db表中检查此用户对应的具体数据库,并得到db中为Y的权限(对某个数据库)

          2.3  如果db表为N,则检查tables_priv中此数据库对应的具体的表,取得表中为Y的权限(对某张表)

          2.4   如果tables_priv为N,则去查columns_priv这张表,看用户对这张表的哪些字段有权限

        

    use mysql;
    REVOKE SELECT on *.* from z1;
    GRANT select ON test01.* to z1;
    SELECT * from db;


    3    用户创建与权限赋予

    use mysql;
    SELECT * from user;
    -- 创建用户z2,,权限为可以在所有数据库的执行权限,可以给其他用户授权
    GRANT all PRIVILEGES on *.* to z2 IDENTIFIED BY '815qza' WITH GRANT OPTION;

     下面可以在远程登录服务器看一下,可以远程登录

            


    4  普通权限

    -- 创建z3,可以从任何ip连接,权限为对test01库里面的所有表进行select ,update,INSERT和delete操作
    -- 其实此权限适用于大多数普通账号。一般的,我们只授予用户适当的权限,不会授予过多全权限
    GRANT SELECT,INSERT,UPDATE,DELETE on test01.* to z3 IDENTIFIED  BY '815qza';

     

     


    5  user表中的host为%,表示所有外部ip都可以连接,但是不包括本地服务器localhost,如果要包含本地服务器,必须单独为localhost赋值,所以user表里你看root用户,就有一行记录是单独赋值的。

    select * from user WHERE user = 'root';

        


    6    查看权限

    SHOW GRANTS for z3;

     


    7    修改mysql用户密码

          方法有很多,就不多说了。会一种就可以!下面就是一种,注意修改完要重启数据库才会生效!!!

    update user set authentication_string = password('123') WHERE User = 'z3';

     


    8   删除用户

         drop user username ,删除用户

    drop USER z1;

    执行后无需重启数据库,测试登录,发现被拒绝了,权限认证没有通过!!!

  • 相关阅读:
    springboot使用MockMvc测试controller
    MySQL5.6版本之后设置DATETIME类型自动更新
    MAVEN打包时跳过Junit测试
    没看这篇干货,别和我说你会IDEA Debug
    java通过HtmlUnit工具和J4L实现模拟带验证码登录
    Vue+Java实现在页面树形展示文件目录
    exceptions: django2.2/ mysql ImproperlyConfigured: mysqlclient 1.3.13 or newer is required; you have 0.9.3
    linux 软连接的使用
    Linux pip命令报错 -bash: pip: command not found
    MySQL使用命令导出/导入数据
  • 原文地址:https://www.cnblogs.com/sunnybowen/p/10089633.html
Copyright © 2011-2022 走看看