PostgreSQL 설치

gclee·2022년 5월 18일
0

설치

Ubuntu Linux에서 PostgreSQL을 설치하기

PostgreSQL 해당 링크에서 PostgreSQL의 설치 가이드를 제공 하여 참고하였습니다.

sudo apt update
...
sudo apt -y install postgresql

설치 후 아래와 같이 입력한 후 접속을 시도하면 비밀번호를 입력 하라고 나온다.

하지만 설치 과정에서 비밀번호를 입력하지 않았기 때문에 비밀번호를 초기화 하기 위해서

아래 명령어 순으로 입력하면 비밀번호를 변경할 수 있습니다.

psql -h localhost -p 5432 -U postgres -d postgres
Password for user postgres:
...

sudo su - postgres
또는
sudo -i -u postgres

...
psql

alter user postgres with password '<비밀번호>';
ALTER ROLE

인증방식 (peer)


피어(peer) 인증 방법은 클라이언트의 운영 체제 사용자 이름을 커널로부터 획득하고, 허용된 데이터베이스 사용자 이름으로 사용함으로써 작동된다(선택적 사용자 이름 매핑 사용). 이 방법은 로컬 연결에만 지원된다.


postgres 사용자는 postgreSQL을 설치하면 자동으로 생성이 되는데

기본 설정으로 인해 지정되지 않은 사용자 (ubuntu)로 접속을 시도하면(psql 등)

ATAL: Peer authentication failed for user "postgres"

해당 오류를 접할 수 있다

연결방식에 대한 설정 파일 정보 /etc/postgresql/<버전>/main/pg_hba.conf

# Database administrative login by Unix domain socket
local   all             postgres                                peer

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "local" is for Unix domain socket connections only
local   all             all                                     peer
# IPv4 local connections:
host    all             all             127.0.0.1/32            scram-sha-256
# IPv6 local connections:
host    all             all             ::1/128                 scram-sha-256
# Allow replication connections from localhost, by a user with the
# replication privilege.
local   replication     all                                     peer
host    replication     all             127.0.0.1/32            scram-sha-256

Type

설명
localUnix Domain Socket 을 사용하는 접속을 의미
로그인한 OS 사용자가 데이터베이스에 접속한 경우
hostTCP/IP 를 사용하는 연결방식

Method

설명
peer로그인을 위한 ident 를 Local 에서만 허용
md5/scram-sha-256로그인 시 비밀번호를 입력

인증 방식에 대한 더 자세한 방법은 인증방법 링크를 통해 확인 할 수 있다.

이를 해결하기 위해서는 연결 방식을 변경을 하거나 또는 os user를 변경하여 postgres role에 접근할 수 있다.

연결 방식 변경

/etc/postgresql/<버전>/main/pg_hba.conf 파일을 열어 아래의 내용을 수정 하여 peer 방식이 아닌 password를 입력하는 방식으로 변경할 수 있습니다.

...
# Database administrative login by Unix domain socket
local   all             all                                     scram-sha-256
...

os user 변경

sudo -u postgres psql
// os user를 postgres로 변경 후 postgres의 postgres 유저로 postgres 데이터베이스에 연결합니다.

외부 접속

외부 접속을 허용 하기 위해서는

/etc/postgresql/<버전>/main/postgresql.conf 파일의 아래 부분을 수정해야 한다

#------------------------------------------------------------------------------
# CONNECTIONS AND AUTHENTICATION
#------------------------------------------------------------------------------

# - Connection Settings -

listen_addresses = '*'

이후 /etc/postgresql/<버전>/main/pg_hba.conf 파일에 아래의 내용을 추가하면
모든 IP에 대한 접속을 허용 할 수 있다

address 부분에 특정 아이피를 입력하면 화이트리스트로 운영 가능

# TYPE  DATABASE        USER            ADDRESS                 METHOD
...
host    all             all             0.0.0.0/0               scram-sha-256

반대로 외부 접속을 차단 하기 위해서는 /etc/postgresql/<버전>/main/pg_hba.conf 파일의 설정을 제거하고

/etc/postgresql/<버전>/main/postgresql.conf 파일의

listen_addresses = 'localhost' 로 변경해 준다면 외부 접속을 차단할 수 있다.

0개의 댓글