SW/리눅스

Linux : CentOS 8 : PostgreSQL 설치 방법, 예제, 명령어

얇은생각 2022. 4. 25. 07:30
반응형

Postgre SQL 또는 Postgres는 내결함성 환경이나 복잡한 애플리케이션을 구축할 수 있는 많은 고급 기능을 갖춘 오픈 소스 범용 객체 관계형 데이터베이스 관리 시스템입니다.

이 가이드에서는 CentOS 8에 Postgre SQL 데이터베이스 서버를 설치하는 방법에 대해 설명합니다. 설치할 버전을 선택하기 전에 응용 프로그램이 이를 지원하는지 확인하십시오.

또한 Postgre SQL 데이터베이스 관리의 기본 사항에 대해서도 알아봅니다.

 

 

Linux : CentOS 8 : PostgreSQL 설치 방법, 예제, 명령어

 

 

필수 조건

패키지를 설치하려면 루트 또는 sudo 권한이 있는 사용자로 로그인해야 합니다.

 

 

 

CentOS에 Postgre SQL을 설치

이 문서를 작성할 당시 표준 CentOS 리포지토리에서 설치할 수 있는 Postgre SQL Server는 버전 9.6과 10.0의 두 가지 버전이 있습니다.

사용 가능한 Postgre SQL 모듈 스트림을 나열하려면 다음을 입력합니다.

dnf module list postgresql

 

 

출력 결과 Postgre SQL 모듈은 두 개의 스트림으로 사용할 수 있습니다. 각 스트림에는 서버와 클라이언트의 두 가지 프로파일이 있습니다. 프로파일 서버가 있는 스트림 10이 기본 스트림입니다.

# CentOS-8 - AppStream
# Name          Stream    Profiles              Summary                                                 
# postgresql    10 [d]    client, server [d]    PostgreSQL server and client module                     
# postgresql    9.6       client, server [d]    PostgreSQL server and client module

 

 

1. 기본 스트림을 설치하려면 Postgre SQL Server 버전 10.0을 입력합니다.

sudo dnf install @postgresql:10

 

 

2. Postgre SQL Server 버전 9.6을 설치하려면 다음을 입력합니다.

sudo dnf install @postgresql:9.6

 

 

Postgre SQL 데이터베이스 시스템에 대한 몇 가지 추가 기능을 제공하는 기여 패키지를 설치할 수도 있습니다.

sudo dnf install postgresql-contrib

 

 

설치가 완료되면 다음 명령으로 Postgre SQL 데이터베이스를 초기화합니다.

sudo postgresql-setup initdb

# Initializing database ... OK

 

 

Postgre SQL 서비스를 시작하고 부팅 시 시작하도록 설정합니다.

sudo systemctl enable --now postgresql

 

 

psql 도구를 사용하여 Postgre SQL 데이터베이스 서버에 연결하여 설치를 확인하고 해당 버전을 인쇄합니다.

sudo -u postgres psql -c "SELECT version();"

# PostgreSQL 10.6 on x86_64-redhat-linux-gnu, compiled by gcc (GCC) 8.2.1 20180905 (Red Hat 8.2.1-3), 64-bit

 

 

 

Postgre SQL 역할 및 인증 방법

Postgre SQL은 역할 개념을 사용하여 데이터베이스 액세스 권한을 처리합니다. 역할은 데이터베이스 사용자 또는 데이터베이스 사용자 그룹을 나타낼 수 있습니다.

Postgre SQL은 여러 인증 방법을 지원합니다. 가장 일반적으로 사용되는 방법은 다음과 같습니다.

• TRUST - pg_hba.conf에 정의된 조건이 충족되면 역할은 암호 없이 연결할 수 있습니다.

• PASSWORD - 역할은 암호를 제공하여 연결할 수 있습니다. 암호는 스크램-sha-256, md5 및 암호(클리어 텍스트)로 저장할 수 있습니다.

• IDENT - TCP/IP 연결에서만 지원됩니다. 사용자 이름 매핑 옵션과 함께 클라이언트의 운영 체제 사용자 이름을 가져오는 방식으로 작동합니다.

•PEER - ID와 동일하지만 로컬 연결에서만 지원됩니다.

 

Postgre SQL 클라이언트 인증은 pg_hba.conf라는 구성 파일에 정의됩니다. 기본적으로 로컬 연결의 경우 Postgre SQL은 피어 인증 방법을 사용하도록 설정됩니다.

Postgres 사용자는 Postgre SQL 서버를 설치할 때 자동으로 생성됩니다. 이 사용자는 Postgre SQL 인스턴스의 슈퍼 사용자입니다. MySQL 루트 사용자와 동일합니다.

Postgres 사용자로 Postgre SQL 서버에 로그인하려면 먼저 사용자로 전환한 다음 psql 유틸리티를 사용하여 Postgre SQL 프롬프트에 액세스합니다.

sudo su - postgres
psql

 

 

여기서 Postgre SQL 인스턴스와 상호 작용할 수 있습니다. Postgre SQL 셸을 종료하려면 다음을 입력합니다.

\q

 

 

또한 sudo 명령을 사용하여 사용자를 전환하지 않고도 Postgre SQL 프롬프트에 액세스할 수 있습니다.

sudo -u postgres psql

 

 

일반적으로 postgres 사용자는 localhost에서만 사용됩니다.

Postgre SQL 역할 및 데이터베이스를 만드는 중입니다.

CREATEROLE 권한이 있는 슈퍼유저 및 역할만 새 역할을 만들 수 있습니다.

다음 예에서는 john이라는 새 역할, johndb 데이터베이스를 만들고 데이터베이스에 대한 권한을 부여합니다.

 

1. 먼저 Postgre SQL 셸에 연결합니다.

sudo -u postgres psql

 

 

2. 다음 명령을 사용하여 새 Postgre SQL 역할을 만듭니다.

CREATE ROLE john;

 

 

3. 새 데이터베이스를 만듭니다.

CREATE DATABASE johndb;

 

 

4. 다음 쿼리를 실행하여 데이터베이스에서 사용자에게 권한을 부여합니다.

GRANT ALL PRIVILEGES ON DATABASE johndb TO john;

 

 

 

Postgre SQL 서버에 대한 원격 액세스를 사용하도록 설정

기본적으로 Postgre SQL 서버는 로컬 인터페이스 127.0.0.1에서만 수신 대기합니다.

Postgre SQL 서버에 대한 원격 액세스를 활성화하려면 구성 파일을 엽니다.

sudo nano /var/lib/pgsql/data/postgresql.conf

 

 

아래로 스크롤하여 연결 및 인증 섹션으로 이동하고 다음 줄을 추가/편집합니다.

# /var/lib/pgsql/data/postgresql.conf

#------------------------------------------------------------------------------
# CONNECTIONS AND AUTHENTICATION
#------------------------------------------------------------------------------

# - Connection Settings -

listen_addresses = '*'     # what IP address(es) to listen on;

 

 

파일을 저장하고 다음을 사용하여 Postgre SQL 서비스를 다시 시작합니다.

sudo systemctl restart postgresql

 

 

ss 유틸리티를 사용하여 변경 내용을 확인합니다.

ss -nlt | grep 5432

# LISTEN   0    128    0.0.0.0:5432    0.0.0.0:*       
# LISTEN   0    128    [::]:5432      [::]:*

 

 

위의 출력은 Postgre SQL 서버가 모든 인터페이스의 기본 포트(0.0.0)에서 수신 중임을 나타냅니다.

마지막 단계는 pg_hba.conf 파일을 편집하여 원격 연결을 허용하도록 서버를 구성하는 것입니다.

다음은 다양한 사용 사례를 보여주는 몇 가지 예입니다.

# /var/lib/pgsql/data/pg_hba.conf

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# The user jane can access all databases from all locations using an md5 password
host    all             jane            0.0.0.0/0                md5

# The user jane can access only the janedb database from all locations using an md5 password
host    janedb          jane            0.0.0.0/0                md5

# The user jane can access all databases from a trusted location (192.168.1.134) without a password
host    all             jane            192.168.1.134            trust

 

 

CentOS 8은 9.6과 10.0의 두 가지 Postgre SQL 버전을 제공합니다.

이 항목에 대한 자세한 내용은 Postgre SQL 설명서를 참조하십시오.

반응형