DataBase란?
여러 사람이 공유하여 사용할 목적으로 체계화해 통합, 관리하는 데이터의 집합
MetaData란?
다른 데이터를 설명해주는 데이터
어떤 목적을 가지고 만들어진 데이터
어떤 데이터 즉 구조화된 정보를 분석, 분류하고 부가적 정보를 추가하기 위해 그 데이터 뒤에 함께 따라가는 정보
Information_schema란?
서버 내에 존재하는 DB의 MetaData(테이블, 컬럼, 인덱스 등의 스키마 정보)를 모아둔 DB
모든 테이블은 읽기 전용이며, 단순히 조회만 가능. 즉 직접 수정하거나 관여할 수 없다.
SQL 설치 시 기본적으로 만들어져 있으며, 서버가 운영하는 모든 DB에 대한 정보를 저장하는 곳
Information_schema 테이블의 구조
https://dev.mysql.com/doc/refman/8.0/en/information-schema.html 참고
Information_schema를 쓰는 이유
위에서 말했듯 데이터가 너무 많아지면 그 데이터를 찾기가 어려워진다. 그러므로 MetaData를 사용하게 되는데 SQL 또한 MetaData를 가지고 있다. 그 MetaData들을 종류별로 묶어서 테이블을 만들었다 그리고 그 테이블을 모아 DataBase를 만들었고, 그 DataBase가 Information_schema이다. 그러므로 모든 데이터가 Information_schema에 있기 때문에 SQL injection에 이용되기도 한다.