zoukankan      html  css  js  c++  java
  • mysql 的information_schame

    借用知乎的某个回答:https://zhuanlan.zhihu.com/p/103047571

    解释了database、schame、tables、column、row、dba、user的关系

    information_schema数据库是MySQL系统自带的数据库,它提供了数据库元数据的访问方式。感觉information_schema就像是MySQL实例的一个百科全书,记录了数据库当中大部分我们需要了结的信息,比如字符集,权限相关,数据库实体对象信息,外检约束,分区,压缩表,表信息,索引信息,参数,优化,锁和事物等等。通过information_schema我们可以窥透整个MySQL实例的运行情况,可以了结MySQL实例的基本信息,甚至优化调优,维护数据库等,information_schema数据库是在mysql的版本5.0之后产生的,一个虚拟数据库,物理上并不存在。

    在注入过程中经常会用到这个库,前提是MySQL版本在5.0之后,在注入中用version()函数查看mysql版本

    在这个库里面有会用到这些表

    SCHEMATA:   提供了当前mysql数据库中所有数据库的信息,其中SCHEMA_NAME字段保存了所有的数据库名.show databases的结果取自此表.

    可以直接   select * from schemata;

    或者   select schema_name from schemata;

    来查看所有库名;

     在实际中还是用第二个搭配上group_concat(),

    如    select group_concat(schema_name) from schemata;

     

     
    TABLES:    提供了关于数据库中的表的信息,详细表述了某个表属于哪个schema,表类型,表引擎,创建时间等信息,其中table_name字段保存了所有列名信息,show tables from schemaname的结果取自此表.

    例如select group_concat(table_name) from information_schema.tables;

    COLUMNS:     提供了表中的列信息.详细表述了某张表的所有列以及每个列的信息,其中column_name保存了所有的字段信息.show columns from schemaname.tablename的结果取自此表.

     例如select group_concat(column_name) from information_schema.columns;

     一般在使用information_schema表的时候,都要用where选则需要的那个表,不然数据量太大

    举个例子

    得到表名:  select group_concat(table_name) from information_schema.tables where table_schema=database();

    得到字段名: select group_concat(column_name) from information_schema.columns where table_name=xxx;

    得到数据:  select group_concatusername,passward,xxx,…………) from xxx;
     

    select group_concat(column_name) from information_schema.columns;

  • 相关阅读:
    5.21php
    5.20日报
    kubernetes
    kubernetes
    Kubernetes
    Docker
    Docker
    Docker
    Docker
    Docker
  • 原文地址:https://www.cnblogs.com/This-is-Y/p/13492709.html
Copyright © 2011-2022 走看看