PostgreSQL은 오픈 소스 데이터베이스 관리 시스템으로, 안정성과 확장성이 뛰어나며 다양한 프로젝트와 응용 프로그램에서 널리 사용되고 있습니다. PostgreSQL 데이터베이스를 설치하고 기본적으로 접속할 수 있는 환경을 설정하는 방법에 대해 알아보겠습니다.
$ sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list. d/pgdg.list'
PostgreSQL 패키지를 구성합니다.
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
패키지의 버전에 문제가 없는지 확인하기 위해 GPG Key를 추가합니다.
최신 버전의 소프트웨어 정보를 얻기 위해 패키지 매니저를 업데이트합니다.
sudo apt update
sudo apt install postgresql -y
환경마다 설정 파일의 위치가 다를 수 있기 때문에 설정파일의 위치를 찾습니다.
sudo -i -u postgres psql -U postgres -c 'SHOW config_file'
config_file
-----------------------------------------
/etc/postgresql/12/main/postgresql.conf
(1 row)
저 같은 경우에는 /etc/postgresql/12/main/위치에 설정 파일이 존재했습니다.
# ..............................생략..............................
listen_addresses = '*' # what IP address(es) to listen on;
# ..............................생략..............................
모든 주소에서 접근할 수 있도록 listen_addresses를 *로 수정합니다.
# ..............................생략..............................
# "local" is for Unix domain socket connections only
local all all peer
# ..............................생략..............................
PostgreSQL에 대해 연결을 허용하기 위해 수정합니다.
pg_hba.conf은 어떤 호스트(클라이언트)가 어떤 방식으로 PostgreSQL 서버에 접근할 수 있는지를 제어하는 설정 파일입니다. 이 파일의 규칙은 아래와 같습니다.
TYPE DATABASE USER ADDRESS METHOD
TYPE: 접근자 유형을 지정합니다. 가장 일반적인 유형으로 local, host가 있습니다.DATABASE: 접근하려는 데이터베이스의 이름을 지정할 수 있으며, all을 기입하여 모두를 지정할 수 있습니다.USER: 접근하려는 사용자의 이름을 지정할 수 있으며, all을 기입하여 모두를 지정할 수 있습니다.ADDRESS: 클라이언트의 주소 또는 서브넷을 지정합니다.METHOD: 인증 방법을 지정합니다. 일반적으로 trust(인증 안함), md5(md5 해시 기반 패스워드), password(일반 패스워드), reject(거부) 등이 사용됩니다.설정 적용을 확실하게 하기 위해서 PostgreSQL을 재시작 합니다.
sudo systemctl restart postgresql.service
이제 모든 설정이 완료되었습니다.
psql -U postgres
psql: error: FATAL: Peer authentication failed for user "postgres"
인증 방법이peer일 경우에는 바로 접속할 수 없습니다. 그러므로, linux의 유저를 변경하여 접속해야 합니다.
sudo -i -u postgres
PostgreSQL을 설치하면서 생성된 postgres유저로 변경합니다.
psql
PostgreSQL로 접속합니다.
alter user postgres with password '<변경할 비밀번호>';
postgres 유저의 비밀번호를 변경합니다.
# ..............................생략..............................
# "local" is for Unix domain socket connections only
local all all md5
# ..............................생략..............................
local에 대한 접속 방식을 peer에서 md5로 변경하여 패스워드로 진입할 수 있도록 수정합니다.
설정 적용을 확실하게 하기 위해서 PostgreSQL을 재시작 합니다.
sudo systemctl restart postgresql.service
이제 모든 설정이 완료되었습니다.
psql -U postgres
psql (12.15 (Ubuntu 12.15-0ubuntu0.20.04.1))
Type "help" for help.
postgres=#
제대로 접속이 되었음을 확인하실 수 있습니다.