美文网首页
Mysql权限系统

Mysql权限系统

作者: iDevOps | 来源:发表于2019-09-27 11:57 被阅读0次
    • 权限系统的作用是授予来自某个主机的某个用户可以查询、插入、修改、删除等数据库操作的权限
    • 权限控制(授权与回收)的执行语句包括create user, grant, revoke
    • 授权后的权限都会存放在MySQL的内部数据库中(数据库名叫mysql),并在数据库启动之后把权限信息复制到内存中
    权限级别

    权限存储在mysql库的user, db, tables_priv, columns_priv, and procs_priv这几个系统表中,待MySQL实例启动后就加载到内存中

    • 3种权限级别
      1.全局性的管理权限,作用于整个MySQL实例级别
      2.数据库级别的权限,作用于某个指定的数据库上或者所有的数据库上
      3.数据库对象级别的权限,作用于指定的数据库对象上(表、视图等)或者所有的数据库对象上
    • 查看用户权限
    # 查看mysql实例默认root用户的权限
    
    mysql> show grants for root@localhost;
    +---------------------------------------------------------------------+
    | Grants for root@localhost                                           |
    +---------------------------------------------------------------------+
    | GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION |
    | GRANT PROXY ON ''@'%' TO 'root'@'localhost' WITH GRANT OPTION       |
    +---------------------------------------------------------------------+
    
    #  比root用户在几个权限系统表中的数据
    
    mysql> select * from user where user='root' and host='localhost';
    输出全是Y
    
    mysql> select * from db where user='root' and host='localhost';
    Empty set
    
    mysql> select * from tables_priv where user='root' and host='localhost';
    Empty set
    
    mysql> select * from columns_priv where user='root' and host='localhost';
    Empty set
    
    mysql> select * from procs_priv where user='root' and host='localhost';
    Empty set
    

    ALL PRIVILEGES: 权限代表全局或者全数据库对象级别的所有权限限配合。如果是rename表名,则要求有alter和drop原表,create和insert新表的权限
    Alter routine权限代表允许修改或者删除存储过程、函数的权限
    Create权限代表允许创建新的数据库和表的权限
    Create routine权限代表允许创建存储过程、函数的权限
    Create tablespace权限代表允许创建、修改、删除表空间和日志组的权限
    Create temporary tables权限代表允许创建临时表的权限
    Create user权限代表允许创建、修改、删除、重命名user的权限
    Create view权限代表允许创建视图的权限
    Delete权限代表允许删除行数据的权限
    Drop权限代表允许删除数据库、表、视图的权限,包括truncate table命令
    Event权限代表允许查询,创建,修改,删除MySQL事件
    Execute权限代表允许执行存储过程和函数的权限
    File权限代表允许在MySQL可以访问的目录进行读写磁盘文件操作,可使用的命令包括load data infile,select … into outfile,load file()函数
    Grant option权限代表是否允许此用户授权或者收回给其他用户你给予的权限
    Index权限代表是否允许创建和删除索引
    Insert权限代表是否允许在表里插入数据,同时在执行analyze table,optimize
    table,repair table语句的时候也需要insert权限
    Lock权限代表允许对拥有select权限的表进行锁定,以防止其他链接对此表 的读或写
    mysqladmin processlist, show engine等命令
    • Reference权限是在5.7.6版本之后引入,代表是否允许创建外键
    • Reload权限代表允许执行flush命令,指明重新加载权限表到系统内存中,refresh命令代表关闭和重新开启日志文件并刷新所有的表
    • Replication client权限代表允许执行show master status,showslave status,showbinary logs命令
    • Replication slave权限代表允许slave主机通过此用户连接master以便建立主从复制关系
    • Select权限代表允许从表中查看数据,某些不查询表数据的select执行则不需要此权限,如Select 1+1,Select PI()+2;而且select权限在执行update/delete语句中含有where条件的情况下也是需要的
    • Show databases权限代表通过执行show databases命令查看所有的数据库名
    • Show view权限代表通过执行show create view命令查看视图创建的语句Shutdown权限代表允许关闭数据库实例,执行语句包括mysqladminshutdown
    • Super权限代表允许执行一系列数据库管理命令,包括kill强制关闭某个连接命令,change master to创建复制关系命令,以及create/alter/drop server等命令
    • Trigger权限代表允许创建,删除,执行,显示触发器的权限
    • Update权限代表允许修改表中的数据的权限
    • Usage权限是创建一个用户之后的默认权限,其本身代表连接登录权限

    mysql> create user t1@localhost;
    Query OK, 0 rows affected (0.00 sec)
    mysql> show grants for t1@localhost;
    +----------------------------------------+
    | Grants for t1@localhost                |
    +----------------------------------------+
    | GRANT USAGE ON *.* TO 't1'@'localhost' |
    +----------------------------------------+
    
    系统权限表

    权限存储在mysql库的user,db, tables_priv, columns_priv, and procs_priv这几个系统表中,待MySQL实例启动后就加载到内存中

    • User表
      存放用户账户信息以及全局级别(所有数据库)权限,决定了来自哪些主机的哪些用户可以访问数据库实例,如果有全局权限则意味着对所有数据库都有此权限
    • Db表
      存放数据库级别的权限,决定了来自哪些主机的哪些用户可以访问此数据库
    • Tables_priv表
      存放表级别的权限,决定了来自哪些主机的哪些用户可以访问数据库的这个表
    • Columns_priv表
      存放列级别的权限,决定了来自哪些主机的哪些用户可以访问数据库表的这个字段
    • Procs_priv表
      存放存储过程和函数级别的权限

    相关文章

      网友评论

          本文标题:Mysql权限系统

          本文链接:https://www.haomeiwen.com/subject/jdpiuctx.html