SW/리눅스

CentOS 7 : PostgreSQL를 설치하는 방법, 예제, 명령어

얇은생각 2020. 11. 28. 07:30
반응형

PostgreSQL 또는 Postgres는 복잡한 웹 응용프로그램을 만들 수 있는 여러 고급 기능을 갖춘 오픈 소스 범용 객체 관계 데이터베이스 관리 시스템입니다.

이 튜토리얼에서는 PostgreSQL를 설치하는 두 가지 방법을 보여 드리겠습니다. 첫 번째 방법은 Postgre를 설치하는 데 필요한 단계를 안내합니다. SQL v9.2.23은 CentOS에서 가져옵니다. 리포지토리를 사용하고 두 번째 리포지토리는 최신 버전의 Postgre를 설치하는 방법을 보여줍니다. 

응용 프로그램에 최신 버전이 필요하지 않은 경우 첫 번째 방법을 사용하고 PostgreSQL를 설치하는 것이 좋습니다. SQL은 CentOS 저장소에서 가져옵니다.

또한 PostgreSQL의 기초도 살펴볼 것입니다.

 

 

CentOS 7 : PostgreSQL를 설치하는 방법, 예제, 명령어

 

 

필수 구성 요소

이 튜토리얼을 계속하기 전에 sudo 권한을 가진 사용자로 로그인했는지 확인합니다.

 

 

 

PostgreSQL를 CentOS repositories로 설치 

Postgresql를 설치합니다. 다음 단계를 따릅니다.

 

01. PostgreSQL를 설치 

Postgre를 설치합니다.SQL 서버와 Postgre를 함께 사용합니다.PostgreSQL 데이터베이스에 몇 가지 추가 기능을 제공하는 SQL contrib 패키지입니다.

sudo yum install postgresql-server postgresql-contrib

 

 

02. 데이터베이스를 초기화

PostgreSQL 데이터베이스를 초기화합니다. 다음 명령을 사용합니다. 

sudo postgresql-setup initdb

# Initializing database ... OK

 

 

03. PostgreSQL를 시작 

Postgre를 시작합니다.SQL 서비스를 시작하고 부팅 시 시작할 수 있도록 다음을 입력합니다.

sudo systemctl start postgresql
sudo systemctl enable postgresql

 

 

04. PostgreSQL를 확인 

설치를 확인하기 위해 PostgreSQL 데이터베이스 서버에 연결해 보겠습니다.  psql 도구를 사용하여 서버 버전을 출력합니다.

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

# PostgreSQL 9.2.23 on x86_64-redhat-linux-gnu, compiled by gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-16), 64-bit
# (1 row)

 

 

Psql은 PostgreSQL 서버와 상호 작용할 수 있는 대화형 명령줄 유틸리티입니다.

 

 

 

PostgreSQL 리포지토리를 설치

이 기사를 쓸 당시, PostgreSQL 최신판은 공식 PostgreSQL 리포지토리에서 사용할 수 있습니다. PostgreSQL 버전 10.4입니다. 다음 단계를 계속하기 전에 PostgreSQL Yum Repository 페이지에서 사용 가능한 새 버전이 있는지 확인합니다.

아래 단계에 따라 최신 PostgreSQL 버전를 설치합니다. 

 

01. PostgreSQL 리포지토리를 사용하도록 설정

PostgreSQL 리포지토리를 활성화하고 rpm 파일을 설치하기만 하면 됩니다.

sudo yum install https://download.postgresql.org/pub/repos/yum/10/redhat/rhel-7-x86_64/pgdg-centos10-10-2.noarch.rpm

 

 

02. PostgreSQL를 설치

리포지토리가 활성화되면 PostgreSQL를 설치합니다. 다음을 통해 패키지를 제공합니다.

sudo yum install postgresql10-server postgresql10-contrib

 

 

03. 데이터베이스를 초기화 

PostgreSQL 데이터베이스 유형을 초기화하려면 다음을 수행합니다.

sudo /usr/pgsql-10/bin/postgresql-10-setup initdb

# Initializing database ... OK

 

 

04. PostgreSQL를 시작

Postgre를 시작합니다.SQL 서비스를 시작하고 부팅 유형에서 시작할 수 있도록 설정합니다.

sudo systemctl start postgresql-10
sudo systemctl enable postgresql-10

 

 

05. PostgreSQL을 설치를 확인

설치를 확인하기 위해 PostgreSQL 데이터베이스 서버에 연결하고  psql 도구를 사용하여 서버 버전을 출력합니다.

sudo -u postgres /usr/pgsql-10/bin/psql -c "SELECT version();"

# PostgreSQL 10.4 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-28), 64-bit
# (1 row)

 

 

 

PostgreSQL 역할 및 인증 방법

데이터베이스 액세스 권한은 PostgreSQL은 역할 개념으로 처리됩니다. 역할은 데이터베이스 사용자 또는 데이터베이스 사용자 그룹을 나타낼 수 있습니다. 

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

 

Trust - 이 방법을 사용하면 pg_hba.conf에 정의된 조건이 충족되는 한 역할이 암호 없이 연결할 수 있습니다.

Password - 역할은 암호를 제공하여 연결할 수 있습니다. 암호는 scram-sha-256 md5 및 password로 저장할 수 있습니다.

Ident - 이 방법은 TCP/IP 연결에서만 지원됩니다. 사용자 이름 매핑(선택 사항)을 사용하여 클라이언트의 운영 체제 사용자 이름을 가져오는 방식으로 작동합니다.

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

 

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

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

PostgreSQL Server에 로그인하고 사용자로 먼저 전환한 다음 Postgre에 액세스해야 합니다. psql 유틸리티를 사용하여 SQL 프롬프트를 표시합니다.

sudo su - postgres
psql

 

 

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

\q

 

 

PostgreSQL 에 액세스할 수도 있습니다. sudo 명령을 사용하여 사용자를 전환하지 않고 프롬프트를 표시합니다.

sudo -u postgres psql

 

 

postgres 사용자는 일반적으로 로컬 호스트에서만 사용되며 이 사용자의 암호를 설정하지 않는 것이 좋습니다.

Postgre를 설치한 경우 다음을 수행합니다. 공식 Postgre의 SQL 버전 10입니다. SQL 리포지토리를 사용하면 psql 이진인 /usr/pgsql-10/bin/psql에 대한 전체 경로를 사용해야 합니다.

 

 

 

PostgreSQL 역할 및 데이터베이스를 생성

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

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

 

01. PostgreSQL 셸에 연결 

sudo -u postgres psql

 

 

02. 새 PostgreSQL 역할를 생성

다음 명령은 john이라는 새 역할을 만듭니다.

create role john;

 

 

03. 새 PostgreSQL 데이터베이스로 이동 

createdb 명령을 사용하여 johndb라는 새 데이터베이스를 생성합니다.

create database johndb;

 

 

04. 권한을 부여 

이전 단계에서 생성한 데이터베이스에 대해 John 사용자에게 사용 권한을 부여하려면 다음 쿼리를 실행합니다.

grant all privileges on database johndb to john;

 

 

 

PostgreSQL 서버에 대한 원격 액세스를 활성화

기본적으로 PostgreSQL 서버는 다음과 같습니다. 로컬 인터페이스 127.0.0.1에서만 수신합니다. PostgreSQL 서버에 대한 원격 액세스를 활성화하고 구성 파일 postgresql.conf를 열고 INSTANS AND 인증 섹션에서 listen_addresses = '*'를 추가합니다.

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

 

 

 

PostgreSQL 버전 10. 파일의 경로는 /var/lib/pgsql/10/data/postgresql.conf입니다.

/var/lib/pgsql/data/postgresql.conf
#------------------------------------------------------------------------------
# CONNECTIONS AND AUTHENTICATION
#------------------------------------------------------------------------------

# - Connection Settings -

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

 

 

파일을 저장하고 PostgreSQL 서비스를 다시 시작합니다.

sudo systemctl restart postgresql

 

 

Postgre를 실행 중인 경우입니다.SQL 버전 10에서 Postgre를 다시 시작합니다.systemctl을 사용한 SQL 서비스가 postgresql-10을 다시 시작합니다.

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.0)에서 수신 중입니다.

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

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

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

# # TYPE  DATABASE        USER            ADDRESS                 METHOD

# The user jane will be able to access all databases from all locations using a md5 password
host    all             jane            0.0.0.0/0                md5

# The user jane will be able to access only the janedb from all locations using a md5 password
host    janedb          jane            0.0.0.0/0                md5

# The user jane will be able to access all databases from a trusted location (192.168.1.134) without a password
host    all             jane            192.168.1.134            trust

 

 

SQL 버전 10, 파일의 전체 경로는 /var/lib/pgsql/10/data/pg_hba.conf입니다.

반응형