Ubuntu에 설치할 PostgreSQL 버전 확인하기
설치하기 전에 Ubuntu에 설치할 수 있는 PostgreSQL을 먼저 확인하였습니다.
아래의 명령어를 실행하면 확인 가능합니다
|
$ apt show postgresql |
Copy

위의 명령어 실행 결과 형재 PostgreSQL을 설치하면 14+238 버전이 설치됩니다.
별 다른 작업 없이 해당 버전을 설치한다면 아래의 명령어로 바로 설치가 가능합니다.
|
$ sudo apt install postgresql postgresql-contrib |
Copy
하지만 저는 PostgreSQL 14 버전을 설치할 것입니다. 그래서 14 버전을 확인해 보았습니다.
|
$ sudo apt show postgresql-14 |
Copy

다행히 필자가 설치한 Ubuntu 버전에는 PostgreSQL 14 버전이 정상적으로 설치가 가능합니다.
들어가기 전 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' |
Copy
다음으로 아래의 명령어를 통해 GPG Key를 추가합니다.
|
$ wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add - |
Copy
다음으로 아래의 명령어를 실행해서 패키지 목록을 Update 합니다.
|
$ sudo apt-get update |
Copy
혹여나 여기까지 진행 중 Error가 발생한다면 맨 하단에 첨부한 PostgreSQL 공식 문서를 참조하시면 도움이 되실 것입니다.
Ubuntu에 PostgreSQL 설치하기
드디어 Ubuntu에 PostgreSQL 설치 전 사전 작업이 모두 완료되었습니다.
이제 아래의 명령어를 실행해서 PostgreSQL 14 버전을 설치할 것입니다.
|
# 최신 버전의 PostgreSQL 설치 명령어 |
|
$ sudo apt-get -y install postgresql |
|
|
|
# 특정 버전의 PostgreSQL를 설치하면 아래와 같이 작성합니다. |
|
$ sudo apt-get -y install postgresql-14 |
Copy
필자는 PostgreSQL 14 버전을 설치하는 명령어를 실행하였습니다.
위의 명령어를 실행 시 별 Error가 발생하지 않으면 정상적으로 Ubuntu 환경에 PostgreSQL이 설치가 된 것입니다.
PostgreSQL 실행하기
아래의 명령어를 실행해서 PostegreSQL를 실행하고, 상태를 확인합니다.
|
# postgresql 실행 |
|
$ sudo service postgresql start |
|
|
|
# postgresql 상태 확인 |
|
$ sudo service postgresql status |
|
|
|
# postgresql 종료 |
|
$ sudo service postgresql stop |
Copy

위의 화면처럼 나온다면 정상적으로 PostgreSQL이 실행된 것입니다.
PostgreSQL 접속하기
PostgreSQL 기본 마스터 계정인 [postgres]로 접속합니다.
|
$ sudo -i -u postgres |
|
$ psql |
Copy

유저 및 데이터베이스 생성하기
[ 유저 생성하기 ]
우선 [ testhyun ] 계정을 생성하고, [ / du ] 명령어로 통해 계정이 잘 생성됐는지 확인합니다.
|
postgres=# create user testhyun password '1234' superuser; |
|
|
|
postgres=# \du |
Copy

위의 화면처럼 [ /du ] 명령어를 통해 생성한 계정이 출력된다면 정상적으로 계정이 생성된 것입니다.
[ Database 생성 및 소유자 지정하기 ]
Database를 생성하고 해당 Database의 소유자를 지정 후 [ \l ] 명령어를 통해 생성된 DB를 확인합니다.
database 이름은 [ hyundb ], owner(소유자)는 위에서 만든 계정으로 지정하였습니다.
|
postgres=# create database hyundb owner testhyun; |
|
|
|
postgres=# \l |
Copy

[ \l ] 명령어를 실행하였을 때 위와 같이 생성됨 Database 정보가 출력된다면 정상적으로 Database가 생성된 것입니다.
[ 생성된 계정 로그인 시 인증 오류 해결 방법 ]
아래의 명령어를 실행해서 위에서 생성된 계정 및 Database로 접속하면 하단의 에러가 발생합니다.
|
$ 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" |
Copy
[ 해결 방법 1 ] - PostgreSQL에서 생성한 유저 계정과 동일한 계정을 Ubuntu에 추가하는 방법입니다.
아래의 명령어를 실행해서 DB 유저와 동일한 Ubuntu 계정을 생성합니다.
|
$ adduser testuser |
Copy

Ubuntu 계정 생성 후에 Ubuntu에서 생성된 계정으로 접속 후 다시 PostgreSQL을 접속하면 정상적으로 접속 가능합니다.
[ 해결 방법 2 ] - 인증 설정(conf) 파일 수정하기
다음 방법으로는 인증 설정 관련 파일인 [ pg_hba.conf ] 파일을 수정해서 접속하는 방법입니다.
아래의 명령어를 실행해서 [ pg_hba.conf ] 파일을 열기 및 수정합니다.
|
$ 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를 재 시작합니다.
|
$ service postgresql restart |
Copy
이제 위에서 생성하였던 계정 및 Database를 다시 접속해봅니다.
|
$ psql -U testhyun -d hyundb |
Copy

이제 정상적으로 접속 가능합니다.
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 [무작정 개발:티스토리]