3. Postgres 시작하기

이 부분에서는 전위의 응용 프로그램을 사용하기 위해서 Postgres를 시작하는 방법 과 자신의 환경에 맞도록 셋팅하는 방법에 대해 논의한다. 이미 Postgres는 성공적 으로 설치되었다고 가정한다. ( Postgres를 설치하기 위해서는 설치 note를 참조하 라.)

이 부분에서 제시된 몇 가지 단계는 모든 Postgres 사용자와 데이터 베이스 관리자 에 해당 되는 사항이다. 데이터 베이스 시스템 관리자는 소프트웨어를 설치하고, 데 이터 베이스를 만들고, postmaster를 실행시키는 사람이다. 데이터 베이스 관리자가 유닉스 의 수퍼유저인 root이거나, 컴퓨터의 하드웨어 적인 관리자일 필요는 없다. 여기서는 일반 사용자를 User로 표현하고, 데이터 베이스 관리자를 Admin 으로 표시 하도록 하겠다.

이 설명서의 예제중 % 기호로 시작되는 문장은 유닉스 쉘상의 명령어를 의미하며, * 기호는 Postgres SQL 질의어상의 명령을 뜻한다.

3.1 Admin / User : 사용자 환경 조정

단순함을 위하여 Postgres가 /usr/local/postgres95 디렉토리에 설치되어 있다고 가 정 하도록 한다. 그러므로 /usr/local/postgres95 라는 디렉토리를 볼때마다 여러분 들은 실제 Postgres가 설치된 디렉토리와 바꾸어 생각해야 한다. (혼동을 피하기 위 하여 아예 처음부터 /usr/local/postgres95 디렉토리에 설치하는 것도 좋은 방법일 것이다.)

모든 명령어들은 /usr/local/postgres95/bin 디렉토리에 설치되어 있다. 그러므로 쉘 명령어 상태에서는 이 디렉토리를 path 에 추가해야 한다. 당신이 만약 Berkeley C Shell 의 변종이나, tcsh 을 사용하고 있다면 .login 파일에 다음과 같은 줄을 추 가한다.

    % set path = ( /usr/local/postgres95/bin $path )

Bourne shell 의 변종이나 ksh, bash 인 경우에는 .profile 에 다음과 같이 쓴다.

    $ PATH=/usr/local/postgres95/bin:$PATH $ export PATH

이제 Postgres 의 bin 디렉토리가 path에 추가되었다고 가정하겠다. 부가적으로 이 설명서를 통하여 쉘변수 지정 또는 환경변수 지정이라는 것을 자주 참조하게 될 것 이다. path를 변경하는데 있어서 위 문단의 내용들을 충분히 이해할수 없었다면, 다음으로 넘어가기 전에 당신이 사용중인 쉘을 기술해 놓은 유닉스 설명서를 참고하 여야 한다.

3.2 Admin : Postmaster 시작하기

논의에 앞서 postmaster 프로세스가 실행되어 있지 않으면 데이터 베이스에 대한 어 떠한 작업도 불가능하다는 것을 명백히 하고자 한다. 당신이 만약 Admin 이라면 pos tmaster를 실행하기 전에 몇 가지 기억해 두어야만 하는것이 있다. 이 설명서에서는 'Administering Postgres' 라는 제목이 있는 부분에서 그것을 다루기로 한다. 그러 나 여기 쓰여진 것과 같이 정확하게 Postgres가 설치되어 있다면, 다음과같은 간단 한 명령어로 postmaster 를 시작할수 있다. % postmaster &

postmaster는 문제가 발생할 경우 도움이 되는 어떤 메세지를 내보내곤 한다. 만 약 postmaster로 부터 디버깅 메세지를 보고 싶은 경우에는 -d 옵션을 주고, 그것을 redirect 로 받아서 저장하면 된다.

    % postmaster -d >& pm.log &

메세지를 보고 싶지 않은 경우에는 다음과 같이 한다.

    % postmaster -S

그러면 postmaster 는 아무것도 표시하지 않을 것이다. 끝에 & 가 붙지 않았음에 유 의하라.

3.3 Admin : 사용자의 추가 및 삭제

createuser 명령어는 어떤 특별한 사용자가 Postgres에 접근 가능하도록 해준다. 이 와 반대로 destroyuser 명령어는 사용자를 삭제하고, Postgres에 접근할 수 없도록 한다. 이러한 명령어들은 단지 Postgres사용자에 대해서만 효과가 있다는 것에 유의 하라. OS 를 관리하는 사용자에게는 아무 효과가 없다.

3.4 User : 응용 프로그램 시작하기

데이터 베이스 관리자 (site adminstrator)가 적절하게 postmaster 프로세스를 시작하였고, 당신이 사용자로서 데이터 베이스에 접근할수 있는 권한을 부여 받았으면 응용 프로그램을 시작할 수 있다. 앞에서 언급했던 것 처럼 당신은 path에 /usr/lo- cal/postgres95/bin 디렉토리를 추가해야 한다. 대부분의 경우 이 정도가 당신이 준비해야 할 내용의 전부이다.

만약 Postgres 명령어 (psql이나 createdb) 실행 도중에 다음과 같은 에러메세지를 났다면, 그것은 다음과 같은 경우에 해당한다.

    connectDB() failed : Is the postmaster running at 'localhost' on port '4322' ?

postmaster 가 실행되지 않았거나, 잘못된 server host 에 연결을 시도하려고 했을 경우이다. 만약 다음과 같은 에러메세지를 만났다면 데이터 베이스 관리자가 올바른 계정으로 postmaster 를 실행시키지 않았다는 뜻이다.

    FATAL 1:Feb 17 23:19:55:process userid (2360) != database owner (268)

이럴때는 다시 postmaster를 수행하도록 Postgres superuser 에게 알려주어야 한다.

3.5 User : Database 관리하기

Postgres가 실행중이라면 시험삼아 몇 개의 데이터 베이스를 만들수 있다. 여기 기 본적인 데이터 베이스 명령어들을 소개한다.

Data Base 작성하기

자, 당신이 mydb 라는 이름의 데이터 베이스를 만들고저 한다. 그렇다면 다음과 같 은 명령어를 주면 된다.

    % createdb mydb

Postgres는 주어진 곳에 얼마든지 여러개의 데이터 베이스를 만들 수 있도록 해 주 며, 그 순간에는 자동으로 여러분이 데이터 시스템 관리자가 된다. 데이터 베이스의 이름은 알파벳 글자가 처음에 와야 하고, 길이는 16글자로 제한된다.

모든 사용자가 데이터 베이스를 만들수 있는 권한을 부여받는 것은 아니다. 만약 당 신이 Postgres에서 데이터 베이스를 만들수 없다면 데이터 베이스 관리자로 부터 데 이터 베이스를 생성할수 있는 허가권을 얻어야 한다. 이럴 때는 데이터 베이스 관리 자와 의 논하도록 하자.

Data Base 접근하기

데이터 베이스를 만들었으면 다음과 같은 방법으로 접근할수 있다.

이 설명서의 예제를 시험해 보려면 psql을 수행하여야 한다. 다음과 같은 명령어로 mydb에 접근할 수 있는 상태가 된다.

    % psql mydb

다음과 같은 환영 메세지(?)를 받게 될 것이다.

    Welcome to the Postgres95 interactive sql monitor
    type \? for help on slash commands type \q to quit type \g to terminate with semicolon to excute query
    You are currently conneted to the database: mydb
    mydb =>

이 프롬프트는 터미널모니터가 이제부터 당신의 명령을 받아들일 수 있다는 뜻이다. 이제 터미널 모니터가 제공하는작업 영역에서 SQL 쿼리를 쓸 수 있다. psql은 역슬래시(\)로 시작하는 escape코드에 응답한다. 예를 들어, Postgres에 대한 여러 가지 문법적 도움말을 얻기 위해서는 명령어 라인에서 다음과 같이 입력한다.

    mydb => \h

쿼리 문장이 끝났음을 알리고, 작업공간의 내용을 Postgres서버에 알려주기 위해 다 음과 같이 입력한다.

    mydb => \g

이것은 서버에게 퀴리의 내용을 실행하라는 뜻이다. 만약 문장 끝에 세미콜론을 사 용 했다면 \g 는 필요없다. 세미콜론이 붙으면 psql 은 자동으로 쿼리를 처리한다.

외부 화일로 부터 쿼리 내용을 읽어들이기 위해서는 대화형 방식대신 다음과 같이 입력한다.

    mydb => \i filename

유닉스로 빠져나가기 위해서는 다음과 같이 한다.

    mydb => \q

그러면 psql이 종료되고, 유닉스 명령어를 쓸 수 있는 쉘 상태가 된다. ( 더 자세한 것은 \h를 입력해 보라.) 탭 혹은 빈칸은 SQL 쿼리내에서 얼마든지 쓸수 있다. dash 이후에 쓰여진 모든 줄들은 무시되며, 그것은 곧 주석으로 처리됨을 의미한다.

Data Base 삭제하기

당신이 mydb 에 대한 데이터 베이스 관리자라면 다음과 같은 명령어를 써서 삭제 할 수있다.

    % destroydb mydb

이러한 명령어는 데이터 베이스에 관계된 모든 유닉스 화일을 물리적으로 지워버리 기 때문에 복구 할 수 없게 된다. 그러므로 작업에 앞서서 더욱 신중하게 생각해야 할 것이다.