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) 인증 방법은 클라이언트의 운영 체제 사용자 이름을 커널로부터 획득하고, 허용된 데이터베이스 사용자 이름으로 사용함으로써 작동된다(선택적 사용자 이름 매핑 사용). 이 방법은 로컬 연결에만 지원된다.
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
값 | 설명 |
---|---|
local | Unix Domain Socket 을 사용하는 접속을 의미 로그인한 OS 사용자가 데이터베이스에 접속한 경우 |
host | TCP/IP 를 사용하는 연결방식 |
값 | 설명 |
---|---|
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
...
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' 로 변경해 준다면 외부 접속을 차단할 수 있다.