우분투 서버에 PostgreSQL 9.1 설치하기
우분투 서버에 PostgreSQL 서버 9.1 버전을 설치하고 identd 로 데이터베이스 서버 인증을 처리하게
설정하는 방법이다. 우분투 10.04를 기준으로 작업했다.
PostgreSQL 최신 버전의 우분투 패키지를 제공하고 있는 다음 PPA 저장소를 추가한다.
sudo add-apt-repository ppa:pitti/postgresql
sudo apt-get update
add-apt-repository 명령어가 없으면 python-software-properties 패키지를 설치한다.
다른 우분투 패키지를 설치하는 것과 마찬가지로 PostgreSQL 9.1 패키지를 설치한다.
덧붙여 개발용 클라이언트 라이브러리(libpq-dev)도 설치한다.
sudo apt-get install postgresql-9.1 libpq-dev
이렇게 설치하면 설정 파일들은 /etc/postgresql/9.1/main 디렉터리에 있게 되고
데이터 디렉터리는 /var/lib/postgresql/9.1/main 가 된다.
만약 데이터 디렉터리를 다른 곳으로 바꾸고자 한다면(아마존 클라우드를 쓴다던가 또는 별도의
디스크에 두길 원한다면) 다음과 같이 한다.(ᅟ예제는 /srv/postgresql/9.1/main 디렉터리에 둔다.)
sudo vi /etc/postgresql/9.1/main/postgresql.conf
+ data_directory = '/srv/postgresql/9.1/main'
sudo mkdir /srv/postgresql/9.1/main
sudo chown postgres:postgres /srv/postgresql/9.1/main
sudo chmod 700 /srv/postgresql/9.1/main
sudo su postgres -c "/usr/lib/postgresql/9.1/bin/initdb \
-D /srv/postgresql/9.1/main"
sudo ln -s /etc/ssl/certs/ssl-cert-snakeoil.pem \
/srv/postgresql/9.1/main/server.crt
sudo ln -s /etc/ssl/private/ssl-cert-snakeoil.key \
/srv/postgresql/9.1/main/server.key
sudo service postgresql stop
sudo service postgresql start
이어 로컬에서 데이터베이스에 접근할 때 ident를 이용하여 인증을 관리하게 하려면 다음과 같이 한다.
먼저 ident 서버로 oidentd를 설치한다.
sudo apt-get install oidentd
sudo vi /etc/default/oidentd
- OIDENT_OPTION="-mf"
+ OIDENT_OPTIONS="--address=127.0.0.1 -mf"
sudo service oidentd restart
위에서 두번째 작업은 oidentd 서버를 로컬에서만 접속할 수 있게 하기 위해서 하는 작업이다.
oidentd 가 127.0.0.1 만 바인드하고 있는지 다음과 같이 확인한다.
sudo netstat -anp | grep LISTEN
(view 127.0.0.1:113 oidentd line)
ident 로 PostgreSQL 서버의 인증을 관리하도록 다음과 같이 설정 파일을 편집한다. 여기서는
보통 사용할 계정 이름을 spica 로 하였다.
sudo vi /etc/postgresql/9.1/main/pg_hba.conf
local all postgres peer map=pg
local all all peer map=pg
host all all 127.0.0.1/32 ident map=pg
host all all ::1/128 ident map=pg
sudo vi /etc/postgresql/9.1/main/pg_ident.conf
pg spica postgres
pg spica spica
pg postgres postgres
sudo service postgresql restart
이렇게 하면 spica 로 셸 계정에 접속한 경우 psql -U postgres 로 postgres 유저로도
접속할 수 있게 된다.
참고

