우분투 리눅스에 PostgreSQL 설치하기

오픈소스 RDBMS의 양대산맥은 MariaDB와 PostgreSQL 이다. 하지만 성능과 기능 그리고 안정성은 PostgreSQL (포스트그레스큐엘이라고 읽는다)이 더 우수하다고 많은 이들이 평가한다. 하지만 개인적으로는 PostgreSQL을 사용해보지는 않았다. 대부분 MySQL이나 MariaDB를 사용했다. 지금 운영하고 있는 워드프레스 블로그를 포함해 많은 오픈소스 CMS나 게시판들이 MySQL을 표준으로 지원해왔기 때문이기도 하다.

하지만 최근들어서는 많은 오픈소스들이 PostgreSQL을 표준으로 지원하고 있으며 북미 지역이나 유럽을 포함해 MySQL과 MariaDB의 사용율은 낮아지고 PostgreSQL의 사용율은 증가하는 추세가 이어지고 있다.

이 포스트에서는 Ubuntu Linux 24.10 버전에 PostgreSQL 16 버전을 설치하는 과정을 올린다.

apt 명령으로 PostgreSQL 패키지 설치

우분투 리눅스에서는 apt 또는 apt-get 명령으로 패키지를 설치한다. root 계정의 권한으로 다음 명령으로 두 개의 패키지를 설치한다.

# apt install -y postgresql  postgresql-contrib

만약 일반 계정이라면 $ sudo apt install ~~ 과 같이 앞에 sudo를 붙여 실행하면 된다.

문제가 없다면 다음과 같이 PostgreSQL의 설정 및 DB의 데이터가 저장되는 경로를 유추할 수 있는 경로가 표시되면서 설치가 완료된다.

PostgreSQL Package Install Complete
PostgreSQL Package Install Complete

화면에 표시된 /var/lib/postgresql/16/main 경로에는 중요 설정파일과 생성할 데이터베이스의 파일이 생성되는 경로가 추가로 생성된다.

PostgreSQL 실행 상태 확인

정상적으로 설치되었다면 자동으로 PostgreSQL 서비스가 실행된다. 다음 명령으로 PostgreSQL 서비스의 정상 실행여부를 확인할 수 있다.

# systemctl  status  postgresql
PostgreSQL 서비스 구동 상태 확인
PostgreSQL 서비스 구동 상태 확인

기본 DBA 계정 비밀번호 설정

PostgreSQL을 설치하면 운영체제와 DBMS에 각각 1개씩 기본 계정이 생성된다. 운영체제에 postgres 라는 계정이 생성되는데 이 계정은 PostgreSQL 서비스 데몬 프로세스들이 실행되는 계정이다.

그리고 DBMS 내부에도 postgres 라는 최고관리자(DBA) 계정이 생성되는데 이 계정은 비밀번호가 설정되지 않는다. 때문에 이 계정의 비밀번호를 다음과 같이 변경해야 한다.

# su - postgres 
$ psql
postgres=# \password  postgres

먼저 su – postgres 명령으로 운영체제의 PostgreSQL 서비스 계정으로 전환한다.

그리고 psql 명령을 실행한 다음 \password 명령으로 postgres 계정의 비밀번호 변경 명령을 실행한다. 이 \password 명령은 운영체제의 명령이 아닌 PostgreSQL의 내부 명령이다.

postgres 계정의 비밀번호 초기화
postgres 계정의 비밀번호 초기화

서버 외부에서 PostgreSQL DBMS에 접속하기 위해서는 외부 접속을 허용해줘야 한다. 기본적으로는 외부에서 접속이 차단되어 있다. 외부 접속 허용 정책은 pg_hba.conf 파일에 다음의 라인을 추가해줘야 한다.

host      all              all              0.0.0.0/0            scram-sha-256
PostgreSQL DB의 외부접속 허용
PostgreSQL DB의 외부접속 허용 (pg_hba.conf)

기본적으로 /etc/postgresql/16/main 디렉토리 아래에 있는 pg_hba.conf 파일의 맨~아래에 추가해주면 된다.

그리고 PostgreSQL 서비스 데몬이 외부로부터의 접속을 받아들일 서버의 네트워크 인터페이스 주소를 설정해줘야 한다.

listen_addresses = '*'
PostgreSQL의 Listen IP 주소 설정
PostgreSQL의 Listen IP 주소 설정

흔히 이 주소를 ‘*’ 로 설정하면 외부에서 모두 접속이 가능하다는 식으로 설명하는 글들이 많은데 반은 맞고 반은 틀린 이야기다. 정확하게 이 listen_addresses는 서버에 존재하는 네트워크 인터페이스 중에서 어떤 인터페이스에서 접속을 대기하고 있을지를 지정해주는 설정이다.

기본값은 localhost 인데 이 의미는 127.0.0.1의 로컬 루프백 인터페이스 즉 외부에서는 TCP/IP 접속을 차단하고 localhost 또는 127.0.0.1 주소의 접속 시도만 받아들인다는 이야기다.

만약 서버에 192.168.219.10 과 172.16.0.10 두 개의 IP 주소가 할당되어 있는데 PostgreSQL에 접속하는 사용자나 어플리케이션 서버가 192.168.219.10 을 통해 접속한다면 192.168.219.10을 설정해주면 된다. 만약 두 인터페이스를 통해 모두 DB에 접속한다면 ‘*’을 입력해주면 된다.

그리고 다음 명령으로 PostgreSQL 서비스를 재실행 한다.

# systemctl  restart  postgresql
PostgreSQL 서비스 재실행하기
PostgreSQL 서비스 재실행하기

외부에서 PostgreSQL DBMS 접속하기

다음과 같이 PostgreSQL을 지원하는 DB 접속 도구를 사용해 접속을 시도해본다.

Heidisql 프로그램으로 PostgreSQL 접속하기
Heidisql 프로그램으로 PostgreSQL 접속하기

접속 후 DBMS의 시스템 카다로그에 있는 PostgreSQL의 사용자 계정을 조회해본다.

PostgreSQL의 DBMS 사용자 계정 조회
PostgreSQL의 DBMS 사용자 계정 조회

정상적으로 조회된다면 PostgreSQL의 기본 DBA계정인 postgres로 잘 접속이 된 것이다.

#postgresql설치 #ubuntu24.10

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다