본문으로 바로가기

PostgreSQL 설치와 DB 만들기 (CentOS 6.6)

category Web/DB/Dev 2015.07.22 13:27

직장생활을 처음 시작하고 처음으로 한 일은 개발이었다. PC에서 Access와 비주얼베이직, 델파이 등을 이용해 혼자 공부하던 SQL을 직장에서 본격적으로 공부하기 시작했다. 그리고 개발에서 엔지니어로 방향을 튼 뒤 처음 접한 것이 바로 Ingres 라는 RDBMS다. 


그리고 이 Ingres의 증손자(?)뻘 되는 PostgreSQL을 오늘 설치하고 테스트 해야할 일이 생겼다. PostgreSQL은 Post Ingres라는 의미도 갖고 있다고 하니 감회가 새롭다. (PostgreSQL은 포스트그레스-큐엘 이라고 읽는다.)


각설하고... 설치 과정과 DB 생성까지를 남긴다. 


1. yum을 이용한 PostgreSQL 설치

postgress는 postgresql의 공식 사이트인 http://www.postgresql.org/에서 소스를 다운받아 직접 컴파일하여 설치할 수도 있지만 일단 테스트니 yum을 이용해 설치했다.


root 계정에서 yum install postgresql-server 명령을 실행해 설치 한다.



당연히 인터넷에 연결되어 있어야 하고 DNS 설정도 제대로 되어 있어야만 리포지토리로 지정된 서버를 찾을 수 있다.


정상적으로 리포지토리를 찾으면 다음과 같이 설치할 패키지를 보여준다. 만약 설치되어 있지 않다면 updates가 아닌 install이라고 표시된다. 현재 8.4.20 버전이 설치될 것임을 보여준다.


Is this ok 에 y 로 응답하면 설치(업데이트)를 시작한다.



2. 계정 확인

mysql과 같은 DB는 일반적으로 root에서 설치하고 실행하는 경우가 많다. 하지만 DB가 root로 구동된다는 것은 보안 관점에서 많은 취약점을 노출시킨다. 그래서 Postgres는 root에서 실행하는 것을 매우....싫어한다.


때문에 앞에서와 같이 postgresql을 설치하면 postgres를 실행할 계정을 만들어 준다. /etc/passwd 파일을 확인해보면 다음과 같이 postgres 계정이 만들어져 있다.



postgresql 을 초기화하고 구동하려면 이 postgres 계정으로 로그인해야 한다. 때문에 postgres 계정의 비밀번호를 설정해주어야 한다. passwd 명령을 통해 비밀번호를 설정하고 ssh 또는 telnet을 재접속한다. 당연히 postgres 계정으로 로그인 해야 한다.


3. 데이터베이스 생성 경로 지정

PostgreSQL을 초기화하고 구동하기 위해서는 몇가지 설정이 필요하다. 그중에서 가장 중요한 것은 데이터베이스를 어디에 생성할 것인가? 이다.


데이터베이스의 생성 경로는 postgresql을 실행하는 계정의 환경변수에 지정하도록 되어 있다. 기본적으로 postgres 계정으로 구동하게 되므로 해당 계정의 환경변수에 설치 시 기본경로가 자동으로 설정되어 있다. postgres 계정의 홈디렉토리는 /var/lib/pgsql 이며 이 디렉토리의 .bash_profile 파일이 프로파일이다.


이 .bash_profile은 다음과 같이 확인할 수 있다.



.bash_profile에는 PGDATA 환경변수를 설정하는 내용이 포함되어 있다. 이 PGDATA라는 환경변수가 바로 postgreSQL의 DB가 생성되는 경로를 갖고 있는 환경변수이며 postgreSQL을 구동할 때 DB경로를 별도로 지정하지 않으면 이 변수의 경로를 DB경로로 지정하여 구동된다.

이 변수는 다음과 같이 env 명령으로 확인할 수 있다. (bash, ksh의 경우)



만약 DB의 경로를 다른 디스크나 디렉토리로 변경하고 싶다면 .bash_profile의 PGDATA 경로를 원하는 경로로 변경해준 뒤 다시 로그인하면 된다.그리고 이 경로의 변경은 반드시 initdb를 실행하기 전에 하는 것이 좋다. 후에 변경하려면... 좀 복잡해질 수 있다.


4. initdb 실행

initdb는 postgreSQL 설치 후 시스템카달로그를 포함하고 있는 postgres 기본 DB를 생성하는 명령어다. 이 기본DB는 postgres 라는 이름으로 생성되며 이 기본 DB 생성 후 psql과 같은 대화형 명령어를 실행한 뒤 CREATE DATABASE 명령을 통해 사용자가 사용할 DB를 생성하게 된다.



5. PostgreSQL 서버 실행

PostgresSQL 서버를 다음과 같이 실행한다. 


1. postgres 계정으로 로그인 (ssh 혹은 telnet)


2. pg_ctl start 명령 실행



3. 구동상태 확인


ps -ef | grep post 명령으로 확인.



보통 -D 옵션과 DB명을 주라고 하는데 PGDATA 환경변수의 경로에 DB가 있다면 궂이 DB명을 표시하지 않아도 된다. 


6. 사용자 DB 생성

db를 생성하기 위해서는 psql 이라는 도구를 실행하고 psql 내에서 CREATE DATABASE 쿼리문을 이용해 생성한다.



psql 명령에도 DB경로를 지정하는 옵션이 있는데 이 옵션은 하나의 서버에 물리적인 여러개의 DB서버를 운용할 때 필요한 옵션이다. 이 이야기는 initdb를 서로 다른 경로에 2번 이상 했을 경우(2개 이상의 인스턴스 운용)에만 운용하면 된다.


-- 끝~~~~ --






신고

댓글을 달아 주세요

  1. 2016.04.06 22:33

    비밀댓글입니다