질문&답변
클라우드/리눅스에 관한 질문과 답변을 주고 받는 곳입니다.
리눅스 분류

PostgreSQL 설치 & 사용법 정리

작성자 정보

  • 관리자 작성
  • 작성일

컨텐츠 정보

본문

PostgreSQL 설치 & 사용법 정리

 

t.gif
t.gif
윈도버전은 cygwin을 이용해서 돌리는데 7.5.x버전부터는 native로 개발된다고 하니, 윈도에서 postgreSQL을 돌리려면 좀 기다리는 것이 좋을듯 하다.
http://www.postgresql.org에서 최신버전을 다운로드 받는다.
실제 postgresql, postgresql-base정도만 있으면 되지만, 여기서는 모두 받아 설치하기로 한다.

기존 시스템에 혹시 설치되어 있을 수도 있는 postgresql을 제거하도록 한다.
rpm -qa|grep postgres로 검색하고, rpm -e --nodeps로 적절히 제거하도록 하라.

소스 컴파일/설치하므로 다운로드 받은 파일의 압축을 푼다.

[root@linux down] tar xvjf postgresql-7.4.2.tar.bz2 -C /usr/local/src
[root@linux down] tar xvjf postgresql-base-7.4.2.tar.bz2 -C /usr/local/src
[root@linux down] tar xvjf postgresql-docs-7.4.2.tar.bz2 -C /usr/local/src
[root@linux down] tar xvjf postgresql-opt-7.4.2.tar.bz2  -C /usr/local/src
[root@linux down] tar xvjf postgresql-test-7.4.2.tar.bz2 -C /usr/local/src

[root@linux down] cd /usr/local/src/postgresql-7.4.2
[root@linux postgresql-7.4.2]# ./configure
[root@linux postgresql-7.4.2]# make; make install /usr/local/pgsql에 설치됨

모든 사용자가 사용할 수 있도록 ..
[root@linux bin]# tail -4 /etc/profile.d/myset.sh
# PostgreSQL 설정
export PATH=$PATH:/usr/local/pgsql/bin
export PGDATA=/usr/local/pgsql/data

[root@linux postgresql-7.4.2]# adduser postgres
[root@linux postgresql-7.4.2]# mkdir /usr/local/pgsql/data
[root@linux postgresql-7.4.2]# chown postgres /usr/local/pgsql/data
[root@linux postgresql-7.4.2]# su - postgres
[postgres@linux postgres]$ initdb -D /usr/local/pgsql/data
[postgres@linux postgres]$ pg_ctl -D /usr/local/pgsql/data -l pgsql.log start
[postgres@linux postgres]$ createdb test
CREATE DATABASE
[postgres@linux postgres]$ psql test
Welcome to psql 7.4.2, the PostgreSQL interactive terminal.

Type:  copyright for distribution terms
       h for help with SQL commands
       ? for help on internal slash commands
       g or terminate with semicolon to execute query
       q to quit

test=# create table test(id varchar(10));
CREATE TABLE
test=# insert into test values('dbakorea');
INSERT 17145 1
test=# select * from test;
    id    
----------
dbakorea
(1 row)

test-# q
[postgres@linux postgres]$ dropdb test  
DROP DATABASE
[postgres@linux postgres]$


매번 데이터 디렉토리를 지정하지 않고 환경변수에 설정하면 pg_ctl start만으로 DBMS를 시동할 수 있다.

시동
[root@linux root]# export PGDATA=/usr/local/pgsql/data
[root@linux root]# sudo -u postgres pg_ctl start -l ~postgres/pgsql.log  
postmaster successfully started
[root@linux root]#

종료
[root@linux root]# sudo -u postgres pg_ctl stop
waiting for postmaster to shut down......done
postmaster successfully shut down
[root@linux root]#


각 postgreSQL의 명령어에 대한 도움말은 '명령어 --help'로 알 수 있다.

위에서 만든 postgres유저로 사용하지 않으려면 새로 사용자를 생성해줘야 한다.
참고) OS유저 postgres는 PostgreSQL의 DBA권한을 가진 슈퍼사용자이다.
보통 관리적인 부분을 제외한 업무에 사용될 유저를 postgres를 그대로 사용하지 않을 것이므로 새로운 사용자를 생성해야 한다.

사용자 생성
[postgres@linux bin]$ createuser -P kang
Enter password for new user:
Enter it again:
Shall the new user be allowed to create databases? (y/n) n
Shall the new user be allowed to create more new users? (y/n) n
CREATE USER
[postgres@linux bin]$

DB생성
그럼 실제 kang이 사용할 DB를 생성해보자. -O는 DB소유자를 지정하는 옵션이다.
kang이라는 DB를 생성하고, 이 DB의 소유자를 kang에게 주었다.
[postgres@linux postgres]$ createdb -O kang kang
CREATE DATABASE
[postgres@linux postgres]$

유저 kang에서 PostgreSQL을 사용
[kang@linux kang]$ psql
Welcome to psql 7.4.2, the PostgreSQL interactive terminal.

Type:  copyright for distribution terms
       h for help with SQL commands
       ? for help on internal slash commands
       g or terminate with semicolon to execute query
       q to quit

kang=> create table member(
kang(> id varchar(10),
kang(> name varchar(10),
kang(> pass varchar(10));
CREATE TABLE
kang=> insert into member values('dbakorea', '강명규', '12345');
INSERT 17159 1
kang=> select * from member;
    id    |  name  | pass  
----------+--------+-------
dbakorea | 강명규 | 12345
(1 row)

kang=> dt 테이블목록 보기
        List of relations
Schema |  Name  | Type  | Owner
--------+--------+-------+-------
public | member | table | kang
(1 row)

kang=> d member member테이블구조 보기
           Table "public.member"
Column |         Type          | Modifiers
--------+-----------------------+-----------
id     | character varying(10) |
name   | character varying(10) |
pass   | character varying(10) |

kang=> drop table member;
DROP TABLE
kang=> q
[kang@linux kang]$

psql내의 SQL명령(select, insert, ..)의 도움말은 h, psql내 명령(dt,di,..)의 도움말은 ?로 알수 있다.

외부에서 DB서버로 연결

[/usr/local/pgsql/data/postgresql.conf]
tcpip_socket = true
port 5432

[postgres@linux data]$ pg_ctl reload
postmaster successfully signaled

[postgres@linux data]$ pg_ctl restart
[postgres@linux data]$ netstat -an|grep 5432
tcp        0      0 0.0.0.0:5432            0.0.0.0:*               LISTEN      
unix  2      [ ACC ]     STREAM     LISTENING     4253   /tmp/.s.PGSQL.5432
[postgres@linux data]$

[/usr/local/pgsql/data/pg_hba.conf] - 자세한 내용은 설정파일내 주석을 참고한다.
# TYPE  DATABASE    USER        IP-ADDRESS        IP-MASK           METHOD
host    all         all         192.168.0.2        255.255.255.0   password


UNIX계열에서 연결
[postgres@linux data]$ psql -h localhost -p 5432 -U kang -W (사실 -W옵션은 안해줘도 된다.)
Password:
Welcome to psql 7.4.2, the PostgreSQL interactive terminal.

Type:  copyright for distribution terms
       h for help with SQL commands
       ? for help on internal slash commands
       g or terminate with semicolon to execute query
       q to quit

kang=> q
[postgres@linux data]$


pgAdmin이라는 윈도관리툴을 postgreSQL사이트에서 찾아 설치하도록 한다.
윈도에서는 이 툴을 사용하여 연결을 확인할 수 있다.

pgAdmin.gif

This article comes from dbakorea.pe.kr (Leave this line as is)

관련자료

댓글 0
등록된 댓글이 없습니다.

공지사항


뉴스광장


  • 현재 회원수 :  60,066 명
  • 현재 강좌수 :  35,971 개
  • 현재 접속자 :  276 명