본문 바로가기

Database/PostgreSQL

처음 사용자를 위한 PostgreSQL 사용 샘플 - 4. pgAdmin 설치 & DB 접속

"처음 사용자를 위한 PostgreSQL 사용 샘플" 이라는 제목의 시리즈로, 저처럼 PostgreSQL을 처음 접하는 사용자를 위한 기본적인 개념, 사용 샘플을 설명드립니다.

이전글

[Database/PostgreSQL] - 처음 사용자를 위한 PostgreSQL 사용 샘플 - 3. PostgreSQL DB 생성 및 접속

 

아래 자료를 참조했습니다.

PostgreSQL Domcumentation
The Internals of PostgreSQL
PostgreSQL Tutorial

pgAdmin 설치

pgAdmin은 PostgreSQL 라이센스로 배포되는 무료 소프트웨어 프로젝트입니다. 아래 링크를 통해 소스와 바이너리를 받을 수 있습니다. 여기서는 윈도우 버전의 바이너리 버전을 다운로드 받아 설치했습니다.

pgAdmin 다운로드: PostgreSQL mirror network

 

처음 pgAdmin을 설치하면 pgAdmin 마스터 패스워드를 입력하는 팝업창이 나타납니다. 이전에 설정한 적이 있다면 입력하고 "OK"를 클릭하면 되고, 설정한 적이 없다면 "Reset Master Password"를 클릭하여 마스터 패스워드를 설정합니다.

 

마스터 패스워드 설정 여부를 확인합니다. "Yes" 클릭하고 마스터 패스워드를 설정합니다.

 

마스터 패스워드를 입력하고 나면, 아래와 같은 pgAdmin 초기 화면을 볼 수 있습니다.

 

pgAdmin 연결 설정

이전 글([Database/PostgreSQL] - 처음 사용자를 위한 PostgreSQL 사용 샘플 - 3. PostgreSQL DB 생성 및 접속)에서 생성한 데이터베이스에 원격으로 pgAdmin으로 접속을 시도하면 연결 실패가 나타날 것입니다. 이는 PostgreSQL을 설치하면 기본값으로 로컬 호스트에서만 접속을 허용하기 때문입니다. 원격에서도 PostgreSQL에 접속하려면 PostgreSQL "postgresql.conf", "pg_hba.conf" 설정 파일 수정 및 PostgreSQL 재시작이 필요합니다.

먼저 PostgreSQL이 설치된 호스트에서 "netstat -ntlp" 명령으로 확인해 보면 PostgreSQL이 사용하는 5432 포트로 로컬 호스트에서만 서비스되도록 해당 포트가 LISTEN하고 있는 것을 볼 수 있습니다.

 

PSQL로 접속해서 "show config_file;" 명령으로

postgresql.conf 파일 (여기서는 /var/lib/pgsql/14/data/postgresql.conf )위치를 확인하고 에디터로 열어서 아래와 같이 listen_addresses = 'localhost' 부분을 listen_addresses = '*' 과 같이 수정합니다.

 

postgresql.conf 파일과 같은 위치의 pg_hba.conf 파일 (여기서는 /var/lib/pgsql/14/data/pg_hba.conf) 도 열어 # IPv4 local connections 부분에서 다음과 같이 수정합니다.

host     all     all     127.0.0.1/32     scram-sha-256 > host     all     all     0.0.0.0/0     trust

테스트 편이를 위해 클라이언트 인증 방식을 "trust"로 입력했습니다. 이는 호스트에 접속 가능한 유저는 어떤 데이터베이스 유저에 관계없이 데이터베이스에 접속할 권한이 있다고 PostgreSQL이 가정하는 방식입니다. MD5, scram-sha-256 같은 암호화 함수를 통한 패스워드 인증을 요구할 수도 있습니다. 상세 내용은 아래 링크를 확인합니다.

21.4. Trust Authentication
21.5. Password Authentication

 

설정 파일 변경 후, PostgreSQL을 재시작하면, 이제 5432 포트에 대해 인터넷에서 접속할 수 있게 되었음을 확인할 수 있습니다.

참고로, 여기서 테스트한 환경은 Oracle Cloud Infrastructure (OCI) 환경입니다. 여기서는 OCI VCN 레벨과 호스트(VM) 레벨에서도 5432 포트를 개방하는 작업을 수행했습니다.

 

이제 pgAdmin에 접속합니다. 이때 데이터베이스 호스트의 DB 설치 계정 postgres 의 패스워드가 필요합니다.

테스트 환경이 OCI라 기본값으로 SSH 키 인증 방식을 사용합니다. 여기서는 패스워드 인증을 enable 시키고 postgres 유저에 대해 패스워드 설정을 미리 했습니다. OCI에서 패스워드 인증 방식으로 연결하는 것은 아래 오라클 문서를 참고하시면 됩니다.

How To Connect To An OCI or OCI-Classic Linux Instance Using SSH PasswordAuthentication Instead Of SSH Keys. (Doc ID 2408800.1)

 

pgAdmin 초기 화면에서 왼쪽 메뉴의 Severs 에 오른쪽 클릭을 해서 Create > Server 팝업창을 띄웁니다. General 탭에서 Name과 Comment를 입력합니다.

 

Connection 탭에서 Host, Port, Username, Password를 입력하고 "Save"를 클릭하면 데이터베이스에 접속을 시도합니다.

 

PostgreSQL에 접속하면 다음과 같은 초기 화면을 볼 수 있습니다.

 

이전 글에서 생성했던 데이터베이스 "postgresmydb"도 pgAdmin에서 보이는 것을 확인할 수 있습니다.

os

 

<끝>