인디노트

PostgreSQL 초기 설정 및 접속 연습 본문

개발 플랫폼 및 언어

PostgreSQL 초기 설정 및 접속 연습

인디개발자 2018. 2. 28. 19:42
출처 
https://sites.google.com/site/dist777study/home/db/postgresql/postgresql-chogi-seoljeong-mich-jeobsog-yeonseub


MySQL의 경우 CLI기반툴로 만지는게 굉장히 쉽다는 생각이 들곤 하는데..
그것 역시...그 환경에 익숙해져있기 때문에 그런 것일뿐
어떤 도구를 사용하건 처음에 아무것도 모를땐 어렵긴 매 한가지..

문서들을 봐도...
뭘 어쩌라는건지 모르겠더라.

적어도 MySQL이 컨셉 자체가 쉽게쉽게 사용하도록 만들어진 것만은 분명한 듯...
사용되는 명령어도 비교적 의미가 명확한 편이고,
잘 몰라도 대충대충 쓸 수 있도록 만들어진 듯 한 느낌이 든다.
그에 비해 PG는 조금 더 엄격한 느낌이 강하다.
.....................................................

최초 Local상에 PG를 설치하면 
PG server와 함께 PG client도 함께 설치된다.
CLI 기반 Client의 명칭은 psql

PG server 설치시 기본 메인 계정은...postgres 인데...
Password는...움...뭐라 설명해야 할까?!?!...
Ubuntu의 root와 비슷한 개념인데...

...일단 Ubuntu 경우를 조금만 풀어서 설명해보자면...
OS설치시 랜덤하게 설정되는 패스워드가 어딘가에 존재하긴 하나
유저에게 알려주진 않는다(최초 부팅시 System Log의 어딘가에 남는다곤 하지만, 리부팅시 저절로 사라짐...)
다시 말해 기본적으로 root 계정으로 직접 접속하는 수단을 없애는 방식이고,
보안을 생각해서 별도의 su 계정을 만들어서 사용하란 뜻임.
그럼 Ubuntu에서는 root 계정을 사용할 수 없는가?!?!하면...그렇지도 않은게...
단순히..root 의 패스워드를 초기화해버리면 사용가능해진다.
(ex> "sudo passwd root" 로 재설정을 해버리면 그만이라는...-_-; ...)
대신..그만큼...root 계정이 공격을 받을 경우 손쉽게 뚫릴 가능성을 높여주는 결과가 된다는건데..

..PostgreSQL도 기본적으로 동일한 개념을 채용하고 있는 듯 하다.

메인 유저는 postgres이고, 최초 패스는 "모른다".(영어권에선 종종 locked user 라고 부르는 듯...)
그리고 Network쪽의 LISTEN 설정은 Localhost만 허용하고 있다.

이상의 내용을 토대로 재정리를 하자면,
네트워크로 접속을 위해서는 LISTEN을 추가해야 하고, User도 만들어줘야 한다.

LISTEN 설정은 postgresql.conf 에서 하고, 
Segment별 혹은 host별 인증방식 설정은 pg_hba.conf 에서 한다.
 ++postgresql.conf, pg_hba.conf 의 위치는...
   CentOS 경우 /var/lib/pgsql/9.4/data , Ubuntu경우 /etc/postgresql/9.4/main 되겠음...

다양한 경우의 예제를 만들기 귀찮으니...
현재는 Test머신이기도 하니
위험성을 무릅쓰고..postgres의 패스워드를 reset할 것이고,
LISTEN도 제한없이 쓰겠다.

pg_hba.conf에  아래 내용을 추가해준다.
  host    all    all    0.0.0.0/0    md5
host기준으로 모든 서버, 모든 계정, 모든 네트워크에 대해 MD5방식 로그인을 요구한다는 의미가 되겠음
(md5를 trust로 바꾸면...패스 안물어보고 그냥 접속 됨...시원허게 오픈해버리는...-_-; )

다음은 postgresql.conf 에서 listen_address 구문을 찾아보면
#listen_addresses = 'localhost'         # what IP address(es) to listen on;
이와 같이 되어있다.
따로 추가설정을 안넣었을 경우 저렇게 설정이 되어있다는 의미 되겠음.
간단하게...
  listen_addresses = '*' 
로 넣어주면....전체 LISTEN 되겠다.
service restart 하면 설정이 적용될 것이고,


다음은...실제 postgres 계정으로 로그인하도록 하기 위해 ...패스워드를 설정해봄.
local에서 
  $ su - postgres
  $ psql
로 local admin 접속 후...
  alter user postgres with password 'new_password';
하면..  postgres / new_password  로 세팅이 되버린다능..

원격서버에서 psql로 접속하려는 경우 예제는 아래와 같음...
  $ psql -h 서버IP -p 5432 -U postgres


 ++ postgres는 client 접속시 무조건 db명을 넣어줘야만 접속이 가능, 작업을 할 수 있는 구조이다.
    기본적으로 admin user명이 postgres이고,postgres 라는 이름의 기본DB도 존재한다.
    psql 옵션에서 원래는 -U user 바로 뒤에 DB명을 넣어주는 것인데
    이 부분을 안적으면 user명과 동일한 이름의 DB를 찾도록 되어있음.



반응형

'개발 플랫폼 및 언어' 카테고리의 다른 글

Samba(3.6.23) 서버 설정 for RHEL 6.5  (0) 2018.03.06
PostgreSQL 10 on CentOS6  (0) 2018.03.02
BLFS Boot Scripts  (0) 2018.02.23
OpenLDAP 소개  (0) 2018.02.23
cannot open shared object file  (0) 2018.02.22
Comments