2024. 7. 25. 17:11

Ubuntu 22.4 / PostgreSQL 14 설치 (퍼옴)

 


Ubuntu에 설치할 PostgreSQL 버전 확인하기

설치하기 전에 Ubuntu에 설치할 수 있는 PostgreSQL을 먼저 확인하였습니다.

아래의 명령어를 실행하면 확인 가능합니다

 
bash
 
$ apt show postgresql
Copy
$ apt show postgresql

위의 명령어 실행 결과 형재 PostgreSQL을 설치하면 14+238 버전이 설치됩니다.

별 다른 작업 없이 해당 버전을 설치한다면 아래의 명령어로 바로 설치가 가능합니다.

 
bash
 
$ sudo apt install postgresql postgresql-contrib
Copy

 

하지만 저는 PostgreSQL 14 버전을 설치할 것입니다. 그래서 14 버전을 확인해 보았습니다.

 
bash
 
$ sudo apt show postgresql-14
Copy
$ sudo apt show postgresql-14

다행히 필자가 설치한 Ubuntu 버전에는 PostgreSQL 14 버전이 정상적으로 설치가 가능합니다.

들어가기 전 PostgreSQL 설치를 위해 따로 패키지(저장소) 등록이 필요합니다.

 

반응형
 

PostgreSQL 설치를 위해 패키지 등록하기

우선 아래의 명령어를 실행해서 최상위 경로로 이동하였습니다.

$ cd /

다음으로 아래의 명령어를 실행해서 패키지 구성을 생성합니다.

 
bash
 
$ sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list. d/pgdg.list'
Copy

 

다음으로 아래의 명령어를 통해 GPG Key를 추가합니다.

 
bash
 
$ wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
Copy

 

다음으로 아래의 명령어를 실행해서 패키지 목록을 Update 합니다.

 
bash
 
$ sudo apt-get update
Copy

혹여나 여기까지 진행 중 Error가 발생한다면 맨 하단에 첨부한 PostgreSQL 공식 문서를 참조하시면 도움이 되실 것입니다.


Ubuntu에 PostgreSQL 설치하기

드디어 Ubuntu에 PostgreSQL 설치 전 사전 작업이 모두 완료되었습니다.

이제 아래의 명령어를 실행해서 PostgreSQL 14 버전을 설치할 것입니다.

 
bash
 
# 최신 버전의 PostgreSQL 설치 명령어
 
$ sudo apt-get -y install postgresql
 
 
 
# 특정 버전의 PostgreSQL를 설치하면 아래와 같이 작성합니다.
 
$ sudo apt-get -y install postgresql-14
Copy

필자는 PostgreSQL 14 버전을 설치하는 명령어를 실행하였습니다.

위의 명령어를 실행 시 별 Error가 발생하지 않으면 정상적으로 Ubuntu 환경에 PostgreSQL이 설치가 된 것입니다.


PostgreSQL 실행하기

아래의 명령어를 실행해서 PostegreSQL를 실행하고, 상태를 확인합니다.

 
bash
 
# postgresql 실행
 
$ sudo service postgresql start
 
 
 
# postgresql 상태 확인
 
$ sudo service postgresql status
 
 
 
# postgresql 종료
 
$ sudo service postgresql stop
Copy
$ sudo service postgresql start

위의 화면처럼 나온다면 정상적으로 PostgreSQL이 실행된 것입니다.


PostgreSQL 접속하기

PostgreSQL 기본 마스터 계정인 [postgres]로 접속합니다.

 
bash
 
$ sudo -i -u postgres
 
$ psql
Copy
$ sudo -i -u postgres

유저 및 데이터베이스 생성하기

[ 유저 생성하기 ]

우선 [ testhyun ] 계정을 생성하고,  [ / du ] 명령어로 통해 계정이 잘 생성됐는지 확인합니다.

 
sql
 
postgres=# create user testhyun password '1234' superuser;
 
 
 
postgres=# \du
Copy
create user testhyun password '1234' superuser;

위의 화면처럼 [ /du ] 명령어를 통해 생성한 계정이 출력된다면 정상적으로 계정이 생성된 것입니다.

 

[ Database 생성 및 소유자 지정하기 ]

Database를 생성하고 해당 Database의 소유자를 지정 후 [ \l ] 명령어를 통해 생성된 DB를 확인합니다.

database 이름은 [ hyundb ], owner(소유자)는 위에서 만든 계정으로 지정하였습니다.

 
bash
 
postgres=# create database hyundb owner testhyun;
 
 
 
postgres=# \l
Copy
create database hyundb owner testhyun;

[ \l ] 명령어를 실행하였을 때 위와 같이 생성됨 Database 정보가 출력된다면 정상적으로 Database가 생성된 것입니다.

 

[ 생성된 계정 로그인 시 인증 오류 해결 방법 ]

아래의 명령어를 실행해서 위에서 생성된 계정 및 Database로 접속하면 하단의 에러가 발생합니다.

 
bash
 
$ psql -U testhyun -d hyundb
Copy
psql: error: connection to server on socket "/var/run/postgresql/.s.PGSQL.5432" failed: FATAL: Peer authentication failed for user "testhyun"
 
bash
 
psql: error: connection to server on socket "/var/run/postgresql/.s.PGSQL.5432" failed:
 
FATAL: Peer authentication failed for user "testhyun"
Copy

[ 해결 방법 1 ] - PostgreSQL에서 생성한 유저 계정과 동일한 계정을 Ubuntu에 추가하는 방법입니다.

 

아래의 명령어를 실행해서 DB 유저와 동일한 Ubuntu 계정을 생성합니다.

 
bash
 
$ adduser testuser
Copy
$ adduser testuser

 Ubuntu 계정 생성 후에 Ubuntu에서 생성된 계정으로 접속 후 다시 PostgreSQL을 접속하면 정상적으로 접속 가능합니다.


[ 해결 방법 2 ] - 인증 설정(conf) 파일 수정하기

 

다음 방법으로는 인증 설정 관련 파일인 [ pg_hba.conf ] 파일을 수정해서 접속하는 방법입니다.

아래의 명령어를 실행해서 [ pg_hba.conf ] 파일을 열기 및 수정합니다.

 
bash

 

 
$ vi /etc/postgresql/13/main/pg_hba.conf
Copy

들어가 전에 앞서

위의 인증 설정 파일을 들어가면 아래의 화면처럼 DB 접근 관련 설정 항목들이 존재합니다.

여기서 수정할 부분은 [ local ], IPv4 전용 [ host ]의 METHOD 부분입니다. METHOD를 보면 각각  [ peer ], [ md5 ]로 초기 설정 값이 적용되어 있습니다.

[ peer ]이란 운영 체제(OS)에서 Client의 운영 체제 사용자 이름과 요청한 Database 사용자 이름과 일치하는지 확인하는 옵션입니다.
  • 수정 전
수정 전
  • 수정 후
수정 후

[ pg_hba.conf ] 파일을 수정 및 저장 후에 아래의 명령어를 실행해서 PostgreSQL를 재 시작합니다.

 
bash
 
$ service postgresql restart
Copy

 

이제 위에서 생성하였던 계정 및 Database를 다시 접속해봅니다.

 
bash
 
$ psql -U testhyun -d hyundb
Copy
psql -U testhyun -d hyundb

이제 정상적으로 접속 가능합니다.


pg_hba.conf 파일 Method 옵션 정리

마지막으로 위에서 진행한 설정 파일 [ pg_hba.conf ]의 Method 옵션에 대해 간략하게 정리하였습니다.

 

[pg_hba.conf]  설정 파일의 Method 옵션은 아래와 같고, PostgreSQL 공식 문서를 참고하였습니다.

  • trust : 무조건 접속을 허용합니다. 이 방법을 사용하면 PostgreSQL 데이터베이스 서버에 연결할 수 있는 모든 사람이 암호나 다른 인증 없이 원하는 PostgreSQL 사용자로 로그인할 수 있습니다.
  • reject : 무조건 연결을 거부합니다. 이것은 그룹에서 특정 호스트를 “ 필터링 “reject 하는 데 유용합니다. 예를 들어 한 라인은 특정 호스트의 연결을 차단할 수 있고 나중 라인은 특정 네트워크의 나머지 호스트가 연결할 수 있도록 합니다.
  • scram-sha-256 : SCRAM-SHA-256 인증을 수행해 사용자의 암호를 확인합니다.
  • md5 : SCRAM-SHA-256 또는 MD5 인증을 수행해 사용자의 암호를 확인합니다.
  • password : 클라이언트가 인증을 위해 암호화되지 않은 암호를 제공하도록 요구합니다. 암호는 네트워크를 통해 일반 텍스트로 전송되기 때문에 신뢰할 수 없는 네트워크에서는 사용해서는 안 됩니다.
  • gss : GSSAPI를 사용해 사용자를 인증합니다. 이것은 TCP/IP 연결에만 사용할 수 있습니다. GSSAPI 암호화와 함께 사용할 수 있습니다.
  • sspi : SSPI를 사용해 사용자를 인증합니다. 이것은 Windows에서만 사용할 수 있습니다.
  • ident : 클라이언트의 ident 서버에 연결하여 클라이언트의 운영 체제 사용자 이름을 얻고 요청한 데이터베이스 사용자 이름과 일치하는지 확인합니다. ID 인증은 TCP/IP 연결에서만 사용할 수 있습니다. 로컬 연결에 대해 지정된 경우 피어 인증이 대신 사용됩니다.
  • peer : 운영 체제에서 클라이언트의 운영 체제 사용자 이름을 가져와서 요청한 데이터베이스 사용자 이름과 일치하는지 확인합니다. 이것은 로컬 연결에만 사용할 수 있습니다.
  • lda : LDAP 서버를 사용해 인증합니다.
  • radius : RADIUS 서버를 사용해 인증합니다.
  • cert : SSL 클라이언트 인증서를 사용해 인증합니다.
  • pam : 운영 체제에서 제공하는 PAM(Pluggable Authentication Modules) 서비스를 사용해 인증합니다.
  • bsd : 운영 체제에서 제공하는 BSD 인증 서비스를 사용해 인증합니다.

출처: https://backendcode.tistory.com/265 [무작정 개발:티스토리]