티스토리 뷰
(구글에서 'linux postgresql'을 검색하면 가장 먼저 나오는 글입니다. Tutorial이 잘 구성되어 있습니다.)
참조 2: PostgreSQL Documentation
(정리가 잘 되어 있습니다.)
연구실에서 새로 구입한 서버에는 레드햇 서버가 설치되어 들어왔는데, 기본 파일 시스템은 적게 잡혀있고, 나머지 부분은 마운트 되지 않은 상태였습니다. 나머지 부분을 마운트 하고 그곳에 PostgreSQL 서버의 데이터 폴더를 만들기로 했습니다.
[root@pearl sjlee] grep postgres /etc/passwd postgres:x:26:26:PostgreSQL Server:/var/lib/pgsql:/bin/bash
위와 같이 해보면, postgres 사용자에 대한 정보를 볼 수 있습니다. X window 상에서는 system-config-users 를 사용하시면 더 쉽게 하실 수 있습니다. 어쨌든 차례대로 사용자 ID, 암호 필드, UID, GID, 이름, 홈디렉토리의 위치, 사용쉘을 나타냅니다. 저의 경우에는 /data/pgsql 를 postgres 사용자의 홈폴더로 사용하고 /data/pgsql/data 폴더를 데이터가 저장되는 디렉터리로 사용하도록 하겠습니다.
[root@pearl sjlee] cd /data [root@pearl sjlee] su postgres bash-3.2$ mkdir pgsql bash-3.2$ cd pgsql bash-3.2$ cp /var/lib/pgsql/.bash_profile ./ bash-3.2$ exit [root@pearl sjlee] /usr/sbin/usermod -d /data/pgsql/data/pgsql 디렉터리를 postgres 사용자 소유로 만들고 원래 홈디렉터리에 있던 .bash_profile을 새로 만든 디렉터리로 복사해옵니다. 그리고 .bash_profile 을 열어보면 다음과 같이 PGDATA 환경변수를 지정하고 있는데, 이 환경변수는 PostgreSQL의 데이터 디렉터리를 지정하므로, 새로 만들 데이터 디렉터리인 /data/pgsql/data 로 되어있는지 확인합니다.
[ -f /etc/profile ] && source /etc/profile PGDATA=/data/pgsql/data export PGDATA
이제 initdb 툴을 사용해서 데이터베이스를 초기화합니다.
bash-3.2$ initdb -D /data/pgsql/data 이 데이터베이스 시스템에서 만들어지는 파일들은 그 소유주가 "postgres" id로 지정될 것입니다. 또한 이 사용자는 서버 프로세스의 소유주가 됩니다. 데이터베이스 클러스터는 ko_KR.UTF-8 로케일로 초기화 될 것입니다. 기본 데이터베이스의 UTF8 인코딩은 설정되었습니다. data 디렉토리 만드는 중 ...완료 data/global 디렉토리 만드는 중 ... 완료 data/pg_xlog 디렉토리 만드는 중 ... 완료 data/pg_xlog/archive_status 디렉토리 만드는 중 ... 완료 data/pg_clog 디렉토리 만드는 중 ... 완료 data/pg_subtrans 디렉토리 만드는 중 ... 완료 data/pg_twophase 디렉토리 만드는 중 ... 완료 data/pg_multixact/members 디렉토리 만드는 중 ... 완료 data/pg_multixact/offsets 디렉토리 만드는 중 ... 완료 data/base 디렉토리 만드는 중 ... 완료 data/base/1 디렉토리 만드는 중 ... 완료 data/pg_tblspc 디렉토리 만드는 중 ... 완료 max_connections 초기값을 선택하는 중 ...100 shared_buffers 초기값을 선택하는 중 ...1000 환경설정 파일을 만드는 중 ...완료 data/base/1 안에 template1 데이터베이스를 만드는 중 ...완료 initializing pg_authid ... 완료 시스템 테이블들을 위한 제한 없는 로우 크기를 활성화 하고 있음 ...완료 initializing dependencies ... 완료 시스템 뷰들을 만드는 중 ... 완료 pg_description 자료 입력 중 ...완료 인코딩 변환규칙(conversion)들을 만드는 중 ...완료 내장객체들의 접근 권한을 설정 중 ... 완료 information schema 만드는 중 ...완료 template1 데이터베이스 vacuum 작업 중 ...완료 template1 데이터베이스를 template0 데이터베이스로 복사 중 ...완료 copying template1 to postgres ... 완료 경고: 로컬 연결의 인증 방법을 "trust" 방식을 지정했습니다. 이 값을 바꾸려면, pg_hba.conf 파일을 수정하든지, 다음번 initdb 명령을 사용할 때, -A 옵션을 사용해서 인증방식을 지정할 수 있습니다. Success. You can now start the database server using: postmaster -D data or pg_ctl -D data -l logfile start
데이터 디렉터리를 초기화하고 나면, 'postmaster -D /data/pgsql/data' 와 같은 명령어로 PostgreSQL Server를 실행할 수 있는데요, 서버가 시작될 때마다 매번 실행시킬 것이기 때문에 PostgreSQL 서버 데몬의 초기화 스크립트를 수정하겠습니다. /etc/rc.d/init.d 에 가면 'postgresql' 이라는 이름으로 초기화 스크립트가 있습니다. 'vi postgresql' 해서 스크립트를 열어보면, PostgreSQL backend daemon 을 시작하고 종료하는 스크립트라는 설명이 있고, 쭈욱 내려가 보면, 아래와 같은 부분이 있습니다.
# Set defaults for configuration variables PGENGINE=/usr/bin PGPORT=5432 PGDATA=/var/lib/pgsql if [ -f "$PGDATA/PG_VERSION" ] && [ -d "$PGDATA/base/template1" ] then echo "Using old-style directory structure" else PGDATA=/var/lib/pgsql/data fi PGLOG=/var/lib/pgsql/pgstartup.log저는 다음과 같이 PGDATA와 PGLOG 를 수정하였습니다.
# Set defaults for configuration variables PGENGINE=/usr/bin PGPORT=5432 PGDATA=/data/pgsql if [ -f "$PGDATA/PG_VERSION" ] && [ -d "$PGDATA/base/template1" ] then echo "Using old-style directory structure" else PGDATA=/data/pgsql/data fi PGLOG=/data/pgsql/pgstartup.log
저장하고 파일을 닫고, 이제 PostgreSQL 서버의 설정을 수정하겠습니다. PostgreSQL 서버의 설정 파일에는 postgresql.conf, pg_hba.conf, pg_ident.conf 등이 있습니다. 이중에서 pg_hba.conf 가 PostgreSQL Client Authentication Configutation 파일입니다. 이 파일을 열어보니, PostgreSQL documentation의 "Client Authentication" Section을 참조하라고 되어 있네요.
제 PC에서 pgAdmin을 사용하는게 편리하기 때문에, 보안상 문제가 있지만, 원격에서 postgres 로그인 롤로 접속할 수 있도록 설정 파일을 수정하도록 하겠습니다.
외부에서 네트워크를 통해 접속하려면 먼저 postgresql.conf의 설정을 확인해야 합니다. postgresql.conf 파일을 열어서 'CONNECTION AND AUTHENTICATION' 부분을 찾습니다.
#--------------------------------------------------------------------------- # CONNECTIONS AND AUTHENTICATION #--------------------------------------------------------------------------- # - Connection Settings - listen_addresses = '*' # what IP address(es) to listen on; # comma-separated list of addresses; # defaults to 'localhost', '*' = all #port = 5432 max_connections = 100그 중에서 listen_addresses = '*' 으로 설정되었는지 확인합니다. 이 설정에서는 어떤 ip로부터 오는 접속에 응답 대기할 것인가를 지정합니다.
그 다음에 pg_hba.conf 파일을 열어서 수정해주어야 합니다. 이 파일에서는 어떤 호스트에 접속을 허용할 것인지와 접속 방법을 지정합니다.
저는 host all all 172.16.164.213/32 이렇게 추가해 주었는데, 제 pc의 ip인 172.16.164.213/32 에서의 모든 연결과 사용자에 대해 신뢰한다는 것입니다. 이렇게 설정해주고, '/usr/bin/pg_ctl -D /data/pgsql/data restart' 와 같은 명령어로 서비스를 시작해줍니다.
여기까지하면 172.16.164.213 ip address 를 갖는 제 pc에서 pgAdmin 을 사용해서 postgres 아이디로 원격으로 접속할 수 있습니다. postgres 에는 암호가 설정되어 있지 않아 trust 로 설정되어 있을 경우 데이터베이스에 접속할 수 있습니다. pgAdmin에서 새로운 로그인 아이디를 만든 후에, 원격에서는 이 아이디로만 접속할 수 있도록 설정을 변경하시는 것도 좋을 것 같습니다.
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 파란 화면을 보았니
- xml2
- tsclient
- PostgreSQL
- Numbering
- pl/java
- OO3
- 리눅스
- subervsion
- 모토로이
- OpenJDK6
- IcedTea6
- 다음팟인코더
- smplayer
- JavaMail
- 병합정렬
- Fedora 9
- GMT
- gl2
- yum update
- Java
- userguide
- SimpleDateFormat
- Fedora 8
- openoffice
- 출력드라이버
- Arrays
- Eclipse
- Linux
- output driver
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
글 보관함