ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Postgresql Windows Binary Install
    ♣ Tech & Biz Salon/Tech 2013. 2. 22. 18:46

    * os : windows7 64bit

    * postgresql version : postgresql-9.2.3-1-windows-x64-binaries


    Windows 64 bit One Installer 를 받아서 설치하는데 설치하면 프로그램 쪽에 Start Server 라는게 보여야 할 거 같은데 보이지 않았다.  ( http://specialguy.tistory.com/71 에 보면 설치후 그런 버튼이 보임 )

    그래서 설치한거 지우고 One Installer 밑에 있는 Binary 로 설치를 진행해보았다.

    구글링하니 그럴듯한 페이지가 나오는데... 잘 정리한거 같은데 막상 해보니 잘 안되었다. 내탓일수도 있겠지...
    어떻게 했나면...

    C:\pgsql\bin>initdb -U postgres -A postgres -E utf8 -D C:\pgsql\data

    initdb: invalid authentication method "postgres" for "local" connections

    하라는데로도 해보고 좀 바꿔서 해봐도 같은 메시지가 나왔다.
    먼저 postgres 유저를 만드는게 우선인거 같은데... 만들고 해봐도 동일한 메시지가 나왔다.

    그리하여 다시 구글링을 하여  ( 참고로 공식사이트의 다큐먼트쪽에는 binary install 에 대한 내용이 제대로 없다;; )  잘 정리된 곳을 보았다. 과거글이지만 지금의 9.x 대 버젼과 다를게 없다.

    해당 블로그글 내용은 이 글 마지막에 카피해두겠음.

    http://blog.naver.com/choidy69/140009548070




    일단 컴퓨터 관리로 가서 postgres 유저를 추가한 다음 


    아래의 명령어로 postgres 계정으로 cmd창을 오픈하고

    C:\pgsql\bin>runas /user:postgres cmd

    postgres의 암호 입력:

    cmd을(를) 사용자 "BYC-PC\postgres"(으)로 시작하려고 합니다...



    오픈된 창에서 드디어 db를 설치!

    C:\Windows\system32>cd c:

    C:\Windows\System32


    C:\Windows\system32>cd ..

    C:\Windows>cd ..


    C:\>cd pgsql


    C:\pgsql>bin\initdb -D data -E utf8 --no-locale

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

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


    The database cluster will be initialized with locale "C".

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


    이미 있는 data 디렉터리의 액세스 권한을 고치는 중 ...완료

    하위 디렉터리 만드는 중 ...완료

    max_connections 초기값을 선택하는 중 ...100

    기본 shared_buffers를 선택하는 중... 32MB

    환경설정 파일을 만드는 중 ...완료

    data/base/1 안에 template1 데이터베이스를 만드는 중 ...완료

    pg_authid 초기화 중 ...완료

    의존성 정보 초기화 중 ...완료

    시스템 뷰들을 만드는 중 ... 완료

    시스템 개체들 설명 자료 입력 중 ...완료

    creating collations ... not supported on this platform

    인코딩 변환규칙(conversion)들을 만드는 중 ...완료

    사전을 만드는 중... 완료

    내장개체들의 액세스 권한을 설정 중 ... 완료

    information schema 만드는 중 ...완료

    loading PL/pgSQL server-side language ... 완료

    template1 데이터베이스 청소 중 ...완료

    template1 데이터베이스를 template0 데이터베이스로 복사 중 ...완료

    template1 데이터베이스를 postgres 데이터베이스로 복사 중 ...완료


    WARNING: enabling "trust" authentication for local connections

    You can change this by editing pg_hba.conf or using the option -A, or

    --auth-local and --auth-host, the next time you run initdb.


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


        "bin\postgres" -D "data"

    또는

        "bin\pg_ctl" -D "data" -l logfile start



    설치 성공^^  이제 db 기동

    C:\pgsql>bin\postgres -D data

    LOG:  database system was shut down at 2013-02-22 17:33:59 KST

    LOG:  database system is ready to accept connections

    LOG:  autovacuum launcher started

    LOG:  could not receive data from client: No connection could be made because th

    e target machine actively refused it.


    could not receive data...  가 뭔지는 안찾아봤는데, 별 이상은 없는거 같습니다.. pgaadmin3 으로 접속해서 조회가 잘 되네요

    db를 기동했으니 이제 Database를 생성해줍니다.  pgaadmin3 에서 커넥션 생성시에는 database라는 용어를 안쓰고 service라고 하더니, 생성하는 곳에서는 database라고 하는군요. 용어만 보아선 각각 별개의 개념으로 가고 링크를 맺어줄수 있을지도 모르겠다는 생각도 듭니다만... 굳이 그럴 필요가 없으니 그렇게 되어있다면 첨 만들때 쓸데없이 복잡하게 한거겠죠 ( sqlserver 의 경우 개념들이 깔끔하지 않은거 같습니다 )

    C:\pgsql\bin>createdb --help

    createdb 프로그램은 PostgreSQL 데이터베이스를 만듭니다.


    사용법:

      createdb [옵션]... [DB이름] [설명]


    옵션들:

      -D, --tablespace=TABLESPACE  데이터베이스를 위한 기본 테이블스페이스

    .......

    C:\pgsql\bin>createdb ultra_all_night_vigorous_sexy_tastegod

    DDL 문 CREATE DATABASE로도 생성이 가능한데, 저는 bin/createdb 명령어로 만들었습니다.

    위와 똑같이 실제 여기저기 설치해야 할 가능성이 있어서 DDL보다 기본 커맨드 쓰는게 더 편한 상황이라서요.


    ** 실 사용자가 접속하는 DB는 아니고, Data Migration용 App 에서 메타성 정보를 관리하는 거라 테이블스페이스를 따로 잡는다던가 하지는 않았습니다.  utf8 이라 한글 저장도 잘 되네요.


    아래에는 제가 참고한 블로그 글을 카피해둡니다. 원글이 데이터베이스 사랑넷에 있었던거 같네요.

    ( 구글링해서 잘 못찾으면 안그래도 데이터베이스 사랑넷 갈까 하고 있었음)

    블로그 주인장 분과 동일인은 아닐 가능성이 높은듯 합니다.  아무튼... 원글님께 감사드립니다.


    http://blog.naver.com/choidy69/140009548070


    PostgreSQL win32 바이너리 설치하기.

    - 김상기 ioseph

    1. 사용자 만들기.

    유닉스와 마찬가지로 일단 DB 서버를 운영할 시스템 사용자가 필요합니다.

    쉘 명령 프롬프트 (cmd 창)에서 net user 명령이나, 컴퓨터 관리에서 사용자 추가로 postgresql 서버를 운영할 사용자를 만듭니다. 예를 들어서 유닉스에서 처럼 postgres

    > net user postgres 1234 /add

     

    2. postgres 사용자로 cmd 실행하기.

    cmd 창에서 runas 명령을 이용해서 앞에서 만든 db 서버를 운영할 사용자(여기서는 postgres로 했습니다)로 새 cmd 창을 띄웁니다.

    > runas /user:postgres cmd

    이 명령이 실행되면 암호를 물어봅니다. 앞에서 암호를 1234로 지정했으니, 그렇게 하면 되겠지요.

     

    3. initdb 작업

    다운 받은 압축파일을 c:\pgsql 폴더에 풀었다고 가정하고, 그 폴더로 이동하면, bin\initdb.exe 파일 있습니다. 이 명령을 실행해서 새로운 db 클러스터를 만듭니다. 만드는 방법은 유닉스에서와 완벽하게 동일합니다.

    > cd \pgsql

    > bin\initdb -D data -E unicode --no-locale

    -D 옵션은 만들어질 데이터 디렉토리를 지정하는 것이고, 윗 예제라면, c:\pgsql\data 가 됩니다.

    -E 옵션은 데이터베이스의 기본 문자셋을 지정하는 것이고, 한국어를 가장 잘 처리하는 것이 unicode (utf-8) 밖에 없는지라, 이 문자셋을 사용합니다.

    --no-locale 옵션은 한국어 정렬관련과 인덱스 관련 때문에 지정해 줍니다.

     

    4. 기본 postgresql.conf 파일 적당히 수정하기.

    새로 만들어진 data 폴더 안에 서버 환경 파일인 postgresql.conf 파일이 있습니다. 이 파일을 약간 수정해 주어야 합니다. 변경되는 값은 listen_addresses (외부에서 접속을 가능하게 하려면, '*' 또는 해당 시스템의 외부용 공식 ip여야합니다.)


    listen_addresses = '*' # what IP interface(s) to listen on; 
    # defaults to localhost, '*' = any

    또한 외부에서 이 서버로 접속을 하려면, data 폴더 안의 pg_hba.conf 파일도 수정해야하는데, 이부분에 대한 이야기는 메뉴얼을 참조하세요.

    (M$ 쪽으로 보다 쉽게 움직이려면, 이 postgresql.conf 파일과, pg_hba.conf 파일을 비주얼하게 편집할 수 있는 툴이 나와야겠다는 생각이 드네요)

     

    5. pg_ctl 명령을 이용한 서비스로 등록하기

    새 데이터베이스 클러스트가 다 만들어졌으면, 이제 db 서버를 시스템이 켜지면 자동으로 실행되도록 윈도우즈 서비스로 등록해 둡니다. 이 작업은 postgres 계정이 아닌, 관리자 계정이어야합니다.

    > c:\pgsql\bin\pg_ctl register -N postmaster -U postgres -P 1234 -D c:\pgsql\data

    다음 postgres 계정이 서비스를 가동할 수 있는 권한을 부여해 주어야합니다. 이 작업도 관리자 권한으로 실행합니다.

    > mmc c:\windows\system32\secpol.msc

    명령으로 '로컬 보안 설정' 창이 나타나면, 거기서 로컬 정책 -> 사용자 권한 할당 영역으로 이동한 다음, '서비스로 로그온' 항목을 더블 클릭해서 편집 대화창을 띄우고, 앞에서 서비스로 실행시킬 사용자를 추가해 줍니다.

     

    6. PostgreSQL 서버 실행하기.

    시스템 관리자 권한으로 명령창에서 net start 명령으로 단순히 실행하면 됩니다.

    > net start postmaster

    여기서 postmaster 는 앞에서 pg_ctl register 명령에서 -N 옵션으로 지정한 이름입니다.

     

    여기까지입니다. 특별한 문제가 없다면, 자연스럽게 가동될 것입니다. 잘 가지고 놀아보시고, 문제점들이 발견되면 DSN 게시판을 통해서 논의해 봅시다.

     

    7. 테스트

    GUI 툴로는 PgAdmin3 프로그램을 다운 받으셔서 테스트 해보시면 됩니다.  

    그래서 늘 해왔듯이, psql 놈으로 테스트를 해보셔도 좋구요.

    > c:\pgsql\bin\psql -U postgres template1



Designed by Tistory.