zoukankan      html  css  js  c++  java
  • MySq:权限表

    权限表

    一、介绍

    ①MySQL服务器通过权限表来控制用户对数据库的访问,权限表存放在MySQL数据库中,由mysql_install_db脚本初始化。
    ②存储账户权限信息表主要有:user、db、host、tables_priv 、columns _priv 、procs_priv;

    二、user表

    1、作用:记录允许连接到服务器的账号信息,里面的权限是全局性
      实例:一个用户在user表中授予DELETE权限,则该用户可以删除MySQL服务器上的所有数据库的任何记录。

    2、介绍:user表中的字段可以分为4类,分别是用用户列、权限列、安全列和资源控制列;

    3、表结构

     

    字段名

    数据类型

    默认值

    字段名

    数据类型

    默认值

    Host

    char(60)

     

    Execute_priv

    enum(‘N’,’Y’)

    N

    User

    char(16)

     

    Repl_slave_priv

    enum(‘N’,’Y’)

    N

    Password

    char(41)

     

    Repl_client_priv

    enum(‘N’,’Y’)

    N

    Select_priv

    enum(‘N’,’Y’)

    N

    Create_view_priv

    enum(‘N’,’Y’)

    N

    Insert_priv

    enum(‘N’,’Y’)

    N

    Show_view_priv

    enum(‘N’,’Y’)

    N

    Update_priv

    enum(‘N’,’Y’)

    N

    Create_routine_priv

    enum(‘N’,’Y’)

    N

    Delete_priv

    enum(‘N’,’Y’)

    N

    Alter_routine_priv

    enum(‘N’,’Y’)

    N

    Create_priv

    enum(‘N’,’Y’)

    N

    Create_user_priv

    enum(‘N’,’Y’)

    N

    Drop_priv

    enum(‘N’,’Y’)

    N

    Event_priv

    enum(‘N’,’Y’)

    N

    Reload_priv

    enum(‘N’,’Y’)

    N

    Trigger_priv

    enum(‘N’,’Y’)

    N

    Shutdown_priv

    enum(‘N’,’Y’)

    N

    Create_tablespace_priv

    enum(‘N’,’Y’)

    N

    Process_priv

    enum(‘N’,’Y’)

    N

    ssl_type

    enum(“,’ANY’,’X509’,

    ’SPECIFIED’)

    N

    File_priv

    enum(‘N’,’Y’)

    N

    ssl_cipher

    blob

    NULL

    Grant_priv

    enum(‘N’,’Y’)

    N

    X509_issuer

    blob

    NULL

    References_priv

    enum(‘N’,’Y’)

    N

    X509_subject

    blob

    NULL

    Index_priv

    enum(‘N’,’Y’)

    N

    max_questions

    int(11)unsigned

    0

    Alter_priv

    enum(‘N’,’Y’)

    N

    max_updates

    int(11)unsigned

    0

    Show_db_priv

    enum(‘N’,’Y’)

    N

    max_connections

    int(11)unsigned

    0

    Super_priv

    enum(‘N’,’Y’)

    N

    max_user_connections

    int(11)unsigned

    0

    Create_tmp_table_priv

    enum(‘N’,’Y’)

    N

    plugin

    char(64)

     

    Lock_tables_priv

    enum(‘N’,’Y’)

    N

    authentication_string

    text

    NULL

    介绍:

    Select_priv:确定用户是否可以通过SELECT命令选择数据。
    Insert_priv:确定用户是否可以通过INSERT命令插入数据。
    Update_priv:确定用户是否可以通过UPDATE命令修改现有数据。
    Delete_priv:确定用户是否可以通过DELETE命令删除现有数据。
    Create_priv:确定用户是否可以创建新的数据库和表。
    Drop_priv:确定用户是否可以删除现有数据库和表。
    Reload_priv:确定用户是否可以执行刷新和重新加载MySQL所用各种内部缓存的特定命令,包 日志、权限、主机、查询和表。
    Shutdown_priv:确定用户是否可以关闭MySQL服务器。在将此权限提供给root账户之外的任何 用户时,都应当非常谨慎。
    Process_priv:确定用户是否可以通过SHOW PROCESSLIST命令查看其他用户的进程。
    File_priv:确定用户是否可以执行SELECT INTO OUTFILE和LOAD DATA INFILE命令。
    Grant_priv:确定用户是否可以将已经授予给该用户自己的权限再授予其他用户。例如,如果用 户可以插入、选择和删除foo数据库中的信息,并且授予了GRANT权限,则该用户 就可以将其任何或全部权限授予系统中的任何其他用户。
    References_priv:目前只是某些未来功能的占位符;现在没有作用。
    Index_priv:确定用户是否可以创建和删除表索引。
    Alter_priv:确定用户是否可以重命名和修改表结构。
    Show_db_priv:确定用户是否可以查看服务器上所有数据库的名字,包括用户拥有足够访问权限 的数据库。可以考虑对所有用户禁用这个权限,除非有特别不可抗拒的原因。
    Super_priv:确定用户是否可以执行某些强大的管理功能,例如通过KILL命令删除用户进程,使 用SET GLOBAL修改全局MySQL变量,执行关于复制和日志的各种命令。
    Create_tmp_table_priv:确定用户是否可以创建临时表。
    Lock_tables_priv:确定用户是否可以使用LOCK TABLES命令阻止对表的访问/修改。
    Execute_priv:确定用户是否可以执行存储过程。此权限只在MySQL 5.0及更高版本中有意义。
    Repl_slave_priv:确定用户是否可以读取用于维护复制数据库环境的二进制日志文件。此用户位      于主系统中,有利于主机和客户机之间的通信。
    Repl_client_priv:确定用户是否可以确定复制从服务器和主服务器的位置。
    Create_view_priv:确定用户是否可以创建视图。此权限只在MySQL 5.0及更高版本中有意义。关   于视图的更多信息,
    Show_view_priv:确定用户是否可以查看视图或了解视图如何执行。此权限只在MySQL 5.0及更   高版本中有意义。关于视图的更多信息,参见第34章。
    Create_routine_priv:确定用户是否可以更改或放弃存储过程和函数。此权限是在MySQL 5.0中引 入的。
    Alter_routine_priv:确定用户是否可以修改或删除存储函数及函数。此权限是在MySQL 5.0中引 入的。
    Create_user_priv:确定用户是否可以执行CREATE USER命令,这个命令用于创建新的MySQL账户。
    Event_priv:确定用户能否创建、修改和删除事件。。
    Trigger_priv:确定用户能否创建和删除触发器。

    4、用户列

      包括Host、User、Password,分别表示主机名、用户名和密码。其中User和Host为User 表的联合主键。当用户与服务器之间建立连接时,输入的账户信息中的用户名称、主机名称和密码必须匹配User表中对应的字段,只有3个值都匹配的时候,才允许连接的建立。这三个字段的值就是创建账户时保存的账户信息。修改密码。其实质就是修改User表中Password字段的值

    5、权限列

      权限列决定了用户的权限,描述了在全局范围内允许对数据和数据库进行的操作。包括查询权限、修改权限等普通权限,还包括了关闭服务器、超级权限和加载用户等高级权限。普通权限用于操作数据库;高级权限用于数据库管理User表中对应的权限是针对所有用户数据库的。这些字段值的类型为ENUM,可以取值的只有“Y” 和“N”;“Y”表示有权限;“N”表示没有权限

    6、安全列

      安全例只有6个字段,其中两个是ssl相关的,2个是x509相关的,另外两个是授权相关的。ssl 用于加密;x509标准可用于标识用户;Plugin字段标识可以用于验证用户身份的插件,如果该字 段为空,服务器使用内建授权验证机制验证用户身份。可以使用语句show variables like ‘have_openssl’语句查询服务器是否支持ssl功能

    7、资源控制列

    资源控制列的字段用来限制用户使用的资源,包含4个字段,分别为:

    max_questions:用户每小时允许执行的查询操作次数
    max_updates:用户每小时允许执行的更新操作次数
    max_connections:用户每小时允许执行的连接操作次数
    max_user_connections:用户允许同时建立的连接次数

    一个小时内用户查询或者连接数量超过资源控制限制,用户将被锁定,直到下一小时,才可以执 行对应的操作
    三、db表和host表
    1、介绍

    db表中存储了用户对某个数据库的操作权限,决定用户能从哪个主机存取哪个数据库。
    host表中存储了某个主机对数据库的操作权限;
    这个权限表不受CRANT和REVOKE语句的影响;
    两者的表结构相似,字段可以分为两类:用户列和权限列

    2、表结构

    (1)db表

     

    字段名

    数据类型

    默认值

    字段名

    数据类型

    默认值

    Host 

    char(60)

     

    Index_priv

    enum('N','Y')

    N

    Db

    char(64)

     

    Alter_priv

    enum('N','Y')

    N

    User

    char(32)

     

    Create_tmp_table_priv

    enum('N','Y')

    N

    Select_priv

    enum('N','Y')

    N

    Lock_tables_priv

    enum('N','Y')

    N

    Insert_priv

    enum('N','Y')

    N

    Create_view_priv

    enum('N','Y')

    N

    Update_priv

    enum('N','Y')

    N

    Show_view_priv

    enum('N','Y')

    N

    Delete_priv

    enum('N','Y')

    N

    Create_routine_priv

    enum('N','Y')

    N

    Create_priv

    enum('N','Y')

    N

    Alter_routine_priv

    enum('N','Y')

    N

    Drop_priv

    enum('N','Y')

    N

    Execute_priv

    enum('N','Y')

    N

    Grant_priv

    enum('N','Y')

    N

    Event_priv

    enum('N','Y')

    N

    References_priv

    enum('N','Y')

    N

    Trigger_priv

    enum('N','Y')

    N

    (2)host表
    3、用户列

    (1)db表用户列有三个字段,分别是Host、User、Db,标识从某个主机连接某个用户对某个数据    库的操作权限,这三个字段的组合构成了db表的主键;
    (2)host表不存储用户名称,用户列只有两个,分别是Host和Db,表示从某个主机连接的用户    对某个数据库的操作权限,其主键包括Host和Db两个字段;
    4、权限列

    db表和host的表的权限大致相同,其中create_routine_priv和alter_routine_priv表示用户是否有 创建和修改存储过程的权限。
    user表中的权限是针对所有数据库的,而db表和host表是针对单个数据库

    四、table_priv表和columns_priv表
    1、作用
      table_priv表:用来对表设置操作权限
      columns_priv表:用来对表的某一列设置操作权限
    2、表结构

    (1)table_priv表结构

     

    字段名

    数据类型

    默认值

    Host

    char(60)

     

    Db

    char(64)

     

    User

    char(32)

     

    Table_name

    char(64)

     

    Grantor

    char(93)

     

    Timestamp

    timestamp

    CURRENT_TIMESTAMP

    Table_priv

    set('Select','Insert','Update','Delete','Create','Drop','Grant','References','Index','Alter','Create View','Show view','Trigger'

     

    Column_priv

    set('Select','Insert','Update','References')

     

    (2)columns_priv表结构

     

    字段名

    数据类型

    默认值

    Host

    char(60)

     

    Db

    char(64)

     

    User

    char(32)

     

    Table_name

    char(64)

     

    Column_name

    char(64)

     

    Timestamp

    timestamp

    CURRENT_TIMESTAMP

    Column_priv

    set('Select','Insert','Update','References')

     

    3、介绍
      (1)table_priv表

    ①Host、Db、User和Table_name分别表示主机名、数据库名、用户名和表名
    ②Grantor表示修改该记录的用户
    ③Timestamp表示修改该记录的时间
    ④Table_priv表示对表的操作权限
    ⑤Column_priv表示对表的列的操作权限

    (2)columns_priv表

    Column_name用来指定对那些数据列具有操作权限

    五、procs_priv表

    1、作用:可以对存储过程和存储函数设置操作权限

    2、表结构

     

    字段名

    数据类型

    默认值

    Host

     char(60)

     

    Db

    char(64)

     

    User

    char(32)

     

    Routine_name

    char(64)

     

    Routine_type

    enum('FUNCTION','PROCEDURE')

    NULL

    Grantor

    char(93)

     

    Proc_priv

    set('Execute','Alter Routine','Grant')

     

    Timestamp

    timestamp

    CURRENT_TIMESTAMP

  • 相关阅读:
    socket实现一个简单的echo服务
    Netty实现丢弃服务协议(Netty4.X学习一)
    大型情感剧集Selenium:8_selenium网页截图的四种方法
    python原类、类的创建过程与方法
    Flask使用bootstrap为HttpServer添加上传文件功能
    充满含金量的一场云原生Meetup,入场券免费发送中……
    Hadoop伪分布式集群的安装部署
    从缓冲池命中率角度判断自己的MYSQL数据库是否需要扩容内存
    MySQL分区表概述
    如何防止mysql数据库被勒索
  • 原文地址:https://www.cnblogs.com/hahayixiao/p/10198668.html
Copyright © 2011-2022 走看看