호0 2017. 3. 23. 13:31

PostgreSQL Source setup ( CentOS 6.5 / PostgreSQL 9.5.5 )


1. PostgreSQL 설치파일 다운

# wget https://ftp.postgresql.org/pub/source/v9.5.5/postgresql-9.5.5.tar.gz

2. PostgreSQL 설치

# tar xvzf postgresql-9.5.5.tar.gz

# cd postgresql-9.5.5

# ./configure --prefix=/raid/usr/local/pgsql --bindir=/raid/usr/local/pgsql/bin --datadir=/raid/usr/local/pgsql/data --enable-depend --enable-nls=ko --with-openssl

** --prefix=PRIFIX : /usr/local/pgsql 대신 PREFIX 로 지정한 디렉토리에 파일을 설치

** --bindir=DIRECTORY : 실행 프로그램의 디렉토리 지정

** --datadir= DIRECTORY : 데이터 디렉토리 지정

** --enable-depend : 헤더 파일이 변경된 경우 영향을 받는 모든 오브젝트 파일이 다시 작성되도록 makefile이 설정. 개발 서버에 유용하다

** --enable-nls=LANGUAGES : 영어 이외의 언어에 의한 프로그램 메시지 표시 기능을 활성화

** --with-openssl : 암호화 연결 지원을 활성화하고 구축


# make && make install

# chown -R postgres:postgres /raid/usr/local/pgsql

# su - postgres                                # PostgreSQL 계정 생성 후 접속

$ vi .bash_profile                            # .bash_profile 내용 추가                

---------------------------------------------------------------------------------------------

# .bash_profile

 

# Get the aliases and functions

if [ -f ~/.bashrc ]; then

        . ~/.bashrc

fi

 

# User specific environment and startup programs

 

PATH=$PATH:$HOME/bin

 

export PATH

 

POSTGRES_HOME=/raid/usr/local/pgsql PATH=$PATH:$POSTGRES_HOME/bin PGLIB=$POSTGRES_HOME/lib PGDATA=$POSTGRES_HOME/data export POSTGRES_HOME PATH PGLIB PGDATA

---------------------------------------------------------------------------------------------


$ source .bash_profile                   # .bash_profile 적용

$ cd /raid/usr/local/pgsql/data

initdb -E UTF8 --locale=ko_KR.UTF-8 -D /raid/usr/local/pgsql/data/data -U postgres

---------------------------------------------------------------------------------------------

이 데이터베이스 시스템에서 만들어지는 파일들은 그 소유주가 "postgres" id

지정될 것입니다. 또한 이 사용자는 서버 프로세스의 소유주가 됩니다.

 

데이터베이스 클러스터는 "ko_KR.UTF-8" 로케일으로 초기화될 것입니다.

initdb: "ko_KR.UTF-8" 로케일에 알맞은 전문검색 설정을 찾을 수 없음

기본 텍스트 검색 구성이 "simple"()로 설정됩니다.

Data page checksums are disabled.

 

………………………………………

………………………………………

 

경고: 로컬 연결의 인증 방법으로 "trust" 방식을 지정했습니다.

이 값을 바꾸려면, pg_hba.conf 파일을 수정하든지,

다음번 initdb 명령을 사용할 때, -A 옵션 또는 --auth-local,

--auth-host 옵션을 사용해서 인증 방법을 지정할 수 있습니다.

 

작업완료. 이제 다음 명령을 이용해서 서버를 가동 할 수 있습니다:

 

    pg_ctl -D data -l 로그파일 start

---------------------------------------------------------------------------------------------


$ vi /raid/usr/local/pgsql/data/data/postgresql.conf   

# 외부 접근 허용하도록 설정파일 수정

---------------------------------------------------------------------------------------------

listen_addresses = '*'

#port = 5432                                              # port 변경 시 해당부분 수정

---------------------------------------------------------------------------------------------


$ vi /raid/usr/local/pgsql/data/data/pg_hba.conf

---------------------------------------------------------------------------------------------

# 인증 관련 설정파일 수정

# TYPE  DATABASE        USER            ADDRESS                 METHOD

host    all             all             0.0.0.0/32              md5

---------------------------------------------------------------------------------------------

** TYPE

Type은 접근자의 접근위치와 통신의 암호화 관련 설정

ex) local, host, hostssl, hostnossl

[local] : localhost와는 다른 개념으로, Unix Domain Socket을 통한 접속에 해당된다.

[hostssl] : ssl인증서를 통한 암호화 통신만 지원하며 localhost, 127.0.0.1식의 접속에 해당된다.

[hostnossl] : ssl접속은 불가능하며, TCP/IP통신을 지원합니다.

[host] : host로 설정한 상태에서 SSL기능을 사용하려면 Postgres컴파일시 --with-openssl옵션을 주어야 하며, postgresql.conf ssl=true로 설정을 해야 한다.

 

** DATABASE

특정한 디비에 대한 접속을 제한할 수 있으며 ,(콤마)로 여러 개의 DB 접근 제어가 가능하다. 모든 DB에 대한 접근을 풀려면 all로 설정하면된다.

만약에 설정할 DB 여러개라 기재하기 불편할 경우 @DBLIST.TXT 식으로 설정하고 DBLIST.TXT PGDATA로 설정한 폴더에 넣으면 된다.

 

** USER

계정설정으로 ,(콤마)구분으로 할 수 있으며, Database @파일명 식으로 따로 파일을 만들어 처리 할 수도 있다. PostgreSQL의 계정 그룹 카탈로그 테이블인 pg_group 또는 create_group 명령으로 그룹을 만들어 계정들은 하위(SYSID)에 묶어두었을때는 +(플러스) 키를 붙인 그룹명으로 설정하면 해당 그룹에 대한 모든 접근이 가능해진다.

 

** ADDRESS

IPv4 CIDR구분으로 해당 C Class에 대해 모두 접근처리를 할 경우는 : xxx.xxx.xxx.0/24

해당 IP에 대한 접근처리를 할 경우는 : xxx.xxx.xxx.xxx/32

 

** METHOD

실제적인 계정의 패스워드에 대한 서버로의 전송 방법이다.

PostgreSQL Server Client와의 접속에는 처음 Client가 접속을 하게 되면 pg_hba.conf에 대해 검색해서 해당 접속에 대한 접근허용을 확인하고 확인이 되면 이 Method에 설정된 암호화 방식으로 패스워드를 전송하라고 응답메시지를 보내고 다시 Client Server로 로그인을 하게 되는 방식입니다.

[trust] : 패스워드 없이 접근 가능

[reject] : 거부

[md5] : 패스워드를 md5로 암호화해서 전송

[crypt] : crypt로 암호화 해서 전송 Postgres 7.2이후부터는 사용 않함. (이전버전설정 호환용)

[password] : text로 패스워드를 전송

[krb4, krb5] : KerberOS V4, 5를 지원

[ident] : 접속 ClientOS User이름을 확인하는 방법

[pam] : PAM(Pluggable Authentication Modules)서비스를 사용한 인증



$ pg_ctl -D /raid/usr/local/pgsql/data/data -l pgLog.log start

# PostgreSQL 가동 ( pg_ctl -D 데이터디렉토리 -l 로그파일 start )

$ exit  

# 설치한 Psql 데몬을 ‘# psql’ 명령어로 실행되도록 복사 ( 해당 작업은 root 계정으로 진행 )

mv /usr/bin/psql /usr/bin/psql_bck

cp /raid/usr/local/pgsql/bin/psql /usr/bin/psql

# su - postgres

$ psql –U postgres -p 5432

psql (9.5.5)

Type "help" for help.

 

postgres=#