PostgreSQL] 개념 및 사용

노션으로 옮김·2020년 4월 1일
1

Study

목록 보기
12/33
post-thumbnail

개요

Error Base SQL Injection을 공부하는데 Database마다 사용되는 쿼리가 완전히 달랐다.
그 중 하나가 PostgreSQL이다.

따라서, 해당 Database에 대해서 필요한 내용만 정리하는 글이다.


PostgreSQL

개념

http://www.gurubee.net/lecture/2887
초기 개발 단계부터 완벽한 ACID와 MVCC를 지원하는 아키텍쳐로 설계된 PostgreSQL은 대용량의 복잡한 트랜잭션 처리를 위한 RDBMS이다.

과거 IBM에서 작성된 RDBMS의 화이트페이퍼를 기반으로 Oracle, DB2 그리고 PostgreSQL이 구현되었기 때문에 mysql이나 mariaDB와 같은 오픈소스 제품과 달리 PostgreSQL의 경우 상용RDBMS 급의 기능을 제공한다고 할 수 있다.

클러스터

실습중인 SQL 인젝션에서 다뤄지지 않는 내용이다.
간략히 개념의 존재만 이해하고 넘어가자.

http://www.gurubee.net/lecture/2942
PostgreSQL의 DATABASE는 여러 개의 SCHEMA들로 구성되어 있습니다. SCHEMA는 OBJECT들의 논리적인 집합을 말합니다.

SCHEMA는 TABLE, VIEW, SEQUENCE, SYNONYM, DOMIAN, FUNCTION동의 OBJECT들로 구성되어 있습니다. 이러한 DATABASE들과 USER/GROUPS, TABLESPACES들이 모여 CLUSTER를 구성합니다.

스키마

postgreSQL에는 스키마를 따로 관리한다.
mysql에서의 스키마는 단순히 형식을 나타내지만,
postgreSQL에서 스키마는 데이터베이스와 같은 하나의 단위를 나타내는것 같다.

스키마는 데이터베이스보다 상위 단위이고, mysql에서의 데이터베이스와 동일하다고 이해하면 된다고 한다.

http://blog.naver.com/PostView.nhn?blogId=seuis398&logNo=70097173659&categoryNo=48&viewDate=¤tPage=1&listtype=0

MySQL에서의 데이터베이스(Database) 개념은 PostgreSQL에서 스키마(Schema) 개념과 유사하다.

SQL

유저 조회

SELECT * FROM PG_SHADOW;

유저 생성

DB생성 권한을 설정하여 TEST3 계정 생성

postgres=# CREATE USER TEST3 PASSWORD 'TEST3' CREATEDB;
CREATE ROLE

#http://www.gurubee.net/lecture/2939

데이터 베이스 조회

postgres=# \l
                                 데이터베이스 목록
   이름    |  소유주  | 인코딩 |   Collate   |    Ctype    |      액세스 권한      
-----------+----------+--------+-------------+-------------+-----------------------
 postgres  | postgres | UTF8   | ko_KR.UTF-8 | ko_KR.UTF-8 | 
 template0 | postgres | UTF8   | ko_KR.UTF-8 | ko_KR.UTF-8 | =c/postgres          +
           |          |        |             |             | postgres=CTc/postgres
 template1 | postgres | UTF8   | ko_KR.UTF-8 | ko_KR.UTF-8 | =c/postgres          +
           |          |        |             |             | postgres=CTc/postgres
(3개 행)

데이터베이스 & 테이블 관리

mysql의 SQL과 동일하다.


사용

서비스 시작

#systemctl start postgresql.service

관리 계정 전환

#sudo -i -u postgres

데이터베이스 실행

#psql

부록

information_schema

mysql과 동일하게 information_schema가 존재하지만
다른 부분이 많다.

tables::table_catalog

데이터베이스를 나타내는 컬럼 이름이다.
mysqltables::table_schema와 같다.

select table_name from information_schema.tables where table_catalog='myDb';

실제로 테스트 해본 결과, 올바른 결과가 반환되지 않는다.
원인은 모르겠지만, 정의대로 이해하고 넘어가자.


참조

https://d2.naver.com/helloworld/227936
: postgreSQL의 개요부터 특징, 구조까지

http://www.gurubee.net/postgresql/basic
: postgreSQL 강좌

0개의 댓글