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=#