------------------------------------------我是分割线--------------------------------------------------
MySQL授权系统通常是通过MySQL数据库中的五个表来实现的,这些表有user、db、host、tables_priv和columns_priv。
user表——该表决定是否允许用户连接到服务器。如果允许连接,权限字段则为该用户的全局权限。
db表——用于决定哪些用户可以从哪些主机访问哪些数据库。包含在db表中的权限适用于这个表标识的数据库。
host表——当您想在db表的范围之内扩展一个条目时,就会用到这个表。举例来说,如果某个db允许通过多个主机访问的话,那么超级用户就可以让db表内将host列为空,然后用必要的主机名填充host表。
tables_priv表——该表与db表相似,不同之处是它用于表而不是数据库。这个表还包含一个其他字段类型,包括timestamp和grantor两个字段,用于存储时间戳和授权方。
columns_priv——该表作用几乎与db和tables_priv表一样,不同之处是它提供的是针对某些表的特定列的权限。这个表也多出了一个字段类型,即其他字段,包括了一个timestamp列,用于存放时间戳。
mysql数据库存储用户表的系统库是information_schema
存储用户表的系统表是tables
| 字段 | 含义 |
| Table_catalog | 数据表登记目录 |
| Table_schema | 数据表所属的数据库名 |
| Table_name | 表名称 |
| Table_type | 表类型[system view|base table] |
| Engine | 使用的数据库引擎[MyISAM|CSV|InnoDB] |
| Version | 版本,默认值10 |
| Row_format | 行格式[Compact|Dynamic|Fixed] |
| Table_rows | 表里所存多少行数据 |
| Avg_row_length | 平均行长度 |
| Data_length | 数据长度 |
| Max_data_length | 最大数据长度 |
| Index_length | 索引长度 |
| Data_free | 自由数据? |
| Auto_increment | 做自增主键的自动增量当前值 |
| Create_time | 表的创建时间 |
| Update_time | 表的更新时间 |
| Check_time | 表的检查时间 |
| Table_collation | 表的字符校验编码集 |
| Checksum | 校验和 |
| Create_options | 创建选项 |
| Table_comment | 表的注释、备注 |
存储用户表字段的系统表是columns
| 字段 | 含义 |
| Table_catalog | 数据表登记目录 |
| Table_schema | 数据表所属的数据库名 |
| Table_name | 所属的表名称 |
| Column_name | 列名称 |
| Ordinal_position | 字段在表中第几列 |
| Column_default | 列的默认数据 |
| Is_nullable | 字段是否可以为空 |
| Data_type | 数据类型 |
| Character_maximum_length | 字符最大长度 |
| Character_octet_length | 字节长度? |
| Numeric_precision | 数据精度 |
| Numeric_scale | 数据规模 |
| Character_set_name | 字符集名称 |
| Collation_name | 字符集校验名称 |
| Column_type | 列类型 |
| Column_key | 关键列[NULL|MUL|PRI] |
| Extra | 额外描述[NULL|on update CURRENT_TIMESTAMP|auto_increment] |
| Privileges | 字段操作权限[select|select,insert,update,references] |
| Column_comment | 字段注释、描述 |
存储键值的系统表是key_column_usage
| 字段 | 含义 |
| Constraint_catalog | 约束登记目录 |
| Constraint_schema | 约束所属的数据库名 |
| Constraint_name | 约束的名称 |
| Table_catalog | 数据表等级目录 |
| Table_schema | 键值所属表所属的数据库名(一般与Constraint_schema值相同) |
| Table_name | 键值所属的表名 |
| Column_name | 键值所属的列名 |
| Ordinal_position | 键值所属的字段在表中第几列 |
| Position_in_unique_constraint | 键值所属的字段在唯一约束的位置(若为外键值为1) |
| Referenced_talble_schema | 外键依赖的数据库名(一般与Constraint_schema值相同) |
| Referenced_talble_name | 外键依赖的表名 |
| Referenced_column_name | 外键依赖的列名 |
存储主键约束、外键约束、唯一约束、check约束、非空约束的系统表是table_constraints
| 字段 | 含义 |
| Constraint_catalog | 约束登记目录 |
| Constraint_schema | 约束所属的数据库名 |
| Constraint_name | 约束的名称 |
| Table_schema | 约束依赖表所属的数据库名(一般与Constraint_schema值相同) |
| Table_name | 约束所属的表名 |
| Constraint_type | 约束类型[primary key|foreign key|unique|check|not null] |
存储索引的系统表是statistics
| 字段 | 含义 |
| Table_catalog | 数据表登记目录 |
| Table_schema | 索引所属表的数据库名 |
| Table_name | 索引所属的表名 |
| Non_unique | 字段不唯一的标识 |
| Index_schema | 索引所属的数据库名(一般与table_schema值相同) |
| Index_name | 索引名称 |
| Seq_in_index |
|
| Column_name | 索引列的列名 |
| Collation | 校对,列值全显示为A |
| Cardinality | 基数(一般与该表的数据行数相同) |
| Sub_part |
|
| Packed | 是否包装过,默认为NULL |
| Nullable | 是否为空[‘’|YES|NO] |
| Index_type | 索引的类型,列值全显示为BTREE(平衡树索引) |
| Comment | 索引注释、备注 |
----------------------------------------------我是分割线-------------------------------------
这篇博客详细介绍了MySQL的授权系统,包括user、db、host、tables_priv和columns_priv五个核心表的作用。user表负责用户连接权限,db表控制数据库访问,host表扩展db表的主机范围,tables_priv和columns_priv分别管理表和列的权限。同时,文章提到了information_schema数据库,它是MySQL存储元数据的地方,如SCHEMATA、TABLES、COLUMNS和STATISTICS等表,提供了关于数据库、表、列和索引的信息。此外,还讨论了用户权限相关的表,如USER_PRIVILEGES、SCHEMA_PRIVILEGES等,以及字符集和约束信息。

被折叠的 条评论
为什么被折叠?



