무작정 개발.Vlog

[Ubuntu] 우분투에 PostgreSQL 설치 및 접속 핵심 정리

by 무작정 개발
반응형

최근에 Ubuntu에 흥미가 생겨 여러 가지를 시도해 보다 이번에는 Ubuntu에 RDBMS 중 하나인 PostgreSQL을 설치하는 방법에 대해 정리하였습니다.

 

PostgreSQL에 대한 설명은 아래의 링크로 생략하였습니다.

PostgreSQL이란?

 

PostgreSQL이란?

이번에 PostgreSQL가 무엇인지 간략하게 정리할 것입니다. 1. PostgreSQL이란? PostgreSQL이란 객체 관계형 데이터베이스(ORDBMS) 중 하나로 무료로 제공되고 있는 데이터베이스 즉, 기본적으로는 관계형 데

backendcode.tistory.com

[ 개발 환경 ]
- Ubuntu 22.04.2 LTS 버전
- 설치할 PostgreSQL 버전 : 14

[ 주의할 점 ]
- Ubuntu 버전에 따라 설치할 수 있는 PostgreSQL 버전이 조금씩 다릅니다.
- 본인은 Ubuntu(우분투) 버전에 맞는 PostgreSQL 버전을 설치하시는 것을 권장합니다.

Ubuntu 설치하기

필자는 WSL를 사용해서 PC(Windows)에 Linux 배포판 중 하나인 Ubuntu를 설치하였습니다.

[Linux] WSL(Windows Subsystem for Linux) 설치 및 세팅(Ubuntu)

 

[Linux] WSL(Windows Subsystem for Linux) 설치 및 세팅(Ubuntu)

이번 글에서는 WSL (Windows Subsystem for Linux)로 본인 PC(로컬)에 Linux를 설치하는 과정을 정리할 것입니다. 그리고 사용할 수 있는 Linux 배보판 중에 우분투(Ubuntu)를 사용할 것입니다. WSL이란? 옛날에는

backendcode.tistory.com


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

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

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

$ apt show postgresql

$ apt show postgresql
$ apt show postgresql

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

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

$ sudo apt install postgresql postgresql-contrib

 

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

$ sudo apt show postgresql-14

$ sudo apt show postgresql-14
$ sudo apt show postgresql-14

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

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

 

반응형

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

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

$ cd /
$ cd /

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

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

 

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

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

 

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

$ sudo apt-get update

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


Ubuntu에 PostgreSQL 설치하기

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

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

# 최신 버전의 PostgreSQL 설치 명령어
$ sudo apt-get -y install postgresql

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

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

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


PostgreSQL 실행하기

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

# postgresql 실행
$ sudo service postgresql start

# postgresql 상태 확인
$ sudo service postgresql status

# postgresql 종료
$ sudo service postgresql stop

$ sudo service postgresql start
$ sudo service postgresql start

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


PostgreSQL 접속하기

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

$ sudo -i -u postgres
$ psql

$ sudo -i -u postgres
$ sudo -i -u postgres


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

[ 유저 생성하기 ]

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

postgres=# create user testhyun password '1234' superuser;

postgres=# \du

create user testhyun password '1234' superuser;
create user testhyun password '1234' superuser;

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

 

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

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

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

postgres=# create database hyundb owner testhyun;

postgres=# \l

create database hyundb owner testhyun;
create database hyundb owner testhyun;

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

 

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

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

$ psql -U testhyun -d hyundb

psql: error: connection to server on socket "/var/run/postgresql/.s.PGSQL.5432" failed: FATAL: Peer authentication failed for user "testhyun"
psql: error: connection to server on socket "/var/run/postgresql/.s.PGSQL.5432" failed: FATAL: Peer authentication failed for user "testhyun"

psql: error: connection to server on socket "/var/run/postgresql/.s.PGSQL.5432" failed: 
FATAL:  Peer authentication failed for user "testhyun"

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

 

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

$ adduser testuser

$ adduser testuser
$ adduser testuser

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


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

 

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

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

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

들어가 전에 앞서

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

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

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

수정 전
수정 전

  • 수정 후

수정 후
수정 후

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

$ service postgresql restart

 

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

$ psql -U testhyun -d hyundb

psql -U testhyun -d hyundb
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 인증 서비스를 사용해 인증합니다.

Reference

PostgreSQL 공식 문서 - Linux에 구축

 

PostgreSQL: Linux downloads (Ubuntu)

Linux downloads (Ubuntu) PostgreSQL is available in all Ubuntu versions by default. However, Ubuntu "snapshots" a specific version of PostgreSQL that is then supported throughout the lifetime of that Ubuntu version. Other versions of PostgreSQL are availab

www.postgresql.org

PostgreSQL 공식 문서 - pg_hba.conf 파일 Method 옵션

 

21.1. The pg_hba.conf File

21.1. The pg_hba.conf File Client authentication is controlled by a configuration file, which traditionally is named pg_hba.conf and is stored in …

www.postgresql.org

 

 
반응형

블로그의 정보

무작정 개발

무작정 개발

활동하기