数据库权限和系统表的梳理

权限梳理

Oracle数据库和mysql数据库都有自己的权限管理。Mysql数据库的权限管理相对oracle数据库的权限管理会更简洁。

Mysql的权限认证是通过查询权限表直接验证的,不过mysql 的权限表是有等级的。在验证的过程中,先验证等级较高的权限表,如果通过验证则放行,不通过会继续验证等级次高的权限表,如果最低的权限表都没有通过,那么系统会判定该用户没有执行这条命令的权限。

Oracle数据库有一套基于权限-角色-用户的权限系统。即:权限可以赋予角色,角色可以赋予用户,用户就可以得到该角色的的全部权限。当然也可以单独为用户添加某个权限。

Mysql和oracle数据库的用户和表的关系也是不一样的。Mysql一个用户,多个数据库,每个数据库拥有各自的表,而Oracle一个数据库,多个用户,每个用户拥有各自的表(数据库对象)

Mysql数据库的权限表都放在mysql库中,其中

  1. mysql.user表存储全局权限,适用于一个给定服务器中的所有数据库
  2. mysql.dbmysql.host表存储数据库权限,适用于一个给定数据库中的所有目标。
  3. mysql.tables_priv表存储表权限,适用于一个给定表中的所有列
  4. mysql.columns_priv表存储列权限,适用于一个给定表中的单一列。这些权限存储在中。

ORACLE系统提供三种权限:Object 对象级、System 系统级、Role 角色级。

  1. Oracle 的角色存放在表 dba_roles
  2. 某角色包含的系统权限存放在  表dba_sys_privs
  3. 包含的对象权限存放在 表dba_tab_privs

具体的权限这里就不列举了

oracle可以参考官网给出的列表:https://docs.oracle.com/en/database/oracle/oracle-database/19/sqlrf/GRANT.html#GUID-20B4E2C0-A7F8-4BC8-A5E8-BE61BDC41AC3  表18-1和表18-2

mydql可以参考官网给出的列表:https://dev.mysql.com/doc/refman/5.7/en/grant-tables.html#grant-tables-user-db

系统表梳理

系统表的梳理主要关注的是有关于元数据的系统表,至于其他的系统表这里暂不做梳理。

Mysql数据库的information_schema是一个元数据库。它就像物业公司的信息库,对管理的每栋大厦有多少电梯、电梯型号、每个房间的长宽高等等了如指掌。

常见的元信息表有:

  1. SCHEMATA提供数据库信息,有哪些数据库,字符集是GBK还是UTF-8等等。
  2. TABLES  提供表的信息,数据库有哪些表,是什么存储引擎等等。
  3. COLUMNS   提供字段的信息,有哪些字段字段类型是什么等等。
  4. STATISTICS  提供索引信息 表中有那些索引,索引的字段、类型等。
  5. TABLE_CONSTRAINTS   提供表的约束情况
  6. KEY_COLUMN_USAGE  提供主键、外键、唯一约束等信息
  7. ROUTINES 提供函数和存储过程的信息
  8. VIEWS 提供数据库下所有视图信息
  9. TRIGGERS  提供所有的触发器情况

Oracle数据库将元数据放到静态数据字典视图。Oracle元数据获取可以通过静态数据字典视图来获取。

Oracle数据库的元数据表同种类型的一般有三张表,前缀分别是:DBA 表示数据库中所有的 ALL 表示当前用户可访问的所有 USER表示当前用户拥有的

【参考:https://docs.oracle.com/cd/B19306_01/server.102/b14237/statviews_2094.htm 】

  1. XX_TAB_COMMENTS  显示表和视图的元数据
  2. XX_TAB_COLUMNS 显示表、视图和集群的列
  3. XX_CONS_COLUMNS 显示约束的元数据

突发奇想

当面对一个数据表很大的时候,我们的业务需求需要查询一些数据,但是这些数据并不是数据表里的数据,或许是一些统计数据,例如想拿到一张表的数据行数、数据表中的字节数等数据。我们去查询数据表效果是不理想的,因为查询的数据表如果数据量很大,那么我们会在这个查询中消耗较长的时间。

建议如下:如果我们想拿到的数据并不是数据库表中的数据,那么我们可以查找数据库的元数据来拿到我们想要的数据,比如想拿到数据库中的行数,我们可以查询数据库中table表的元数据,里面会有行数据的统计。相对于使用count来查询表,效率和时间都会有很大的提升。

你可能感兴趣的:(数据库)