본문 바로가기
오픈소스(Open Source)

postgres db admin

by 테크한스 2015. 1. 14.
반응형

PostgreSQL 설치 & 사용법 정리

icon_view.gif 조회 : 13,650  



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사이트에서 찾아 설치하도록 한다.

윈도에서는 이 툴을 사용하여 연결을 확인할 수 있다.



반응형

'오픈소스(Open Source)' 카테고리의 다른 글

mysql 운영  (0) 2015.01.14
mysql command  (0) 2015.01.14
oracle information  (0) 2015.01.14