SW/리눅스

Linux : Ubuntu 20.04 : PostgreSQL 설치 방법, 예제, 명령어

얇은생각 2022. 9. 21. 07:30
반응형

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

이 가이드에서는 PostgreSQL를 설치하는 방법을 설명합니다.Ubuntu 20.04의 SQL 데이터베이스 서버에서 PostgreSQL 데이터베이스 관리의 기본 사항을 살펴봅니다.

 

 

Linux : Ubuntu 20.04 : PostgreSQL 설치 방법, 예제, 명령어

 

 

필수 구성 요소

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

 

 

 

PostgreSQL on Ubuntu 설치

이 기사를 쓸 당시 PostgreSQL의 최신 버전은 다음과 같습니다. 공식 Ubuntu 리포지토리에서 사용할 수 있는 SQL은 PostgreSQL 버전 10.4입니다.

다음 명령을 실행하여 PostgreSQL를 설치합니다. Ubuntu의 SQL Server는 다음과 같습니다.

sudo apt update
sudo apt install postgresql postgresql-contrib

 

 

또한 PostgreSQL도 설치하고 있습니다.  몇 가지 추가 기능을 제공하는 PostgreSQL 기여 패키지입니다.

설치가 완료되면 PostgreSQL 서비스가 자동으로 시작됩니다. psql 도구를 사용하여 PostgreSQL 데이터베이스 서버를 인쇄하고 연결하여 설치를 확인합니다.

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

# PostgreSQL 12.2 (Ubuntu 12.2-4) on x86_64-pc-linux-gnu, compiled by gcc (Ubuntu 9.3

 

 

PostgreSQL이 설치되었으며 SQL을 사용할 수 있습니다.

 

 

 

PostgreSQL 역할 및 인증 방법

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

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

 

신뢰 - pg_hba.conf에 정의된 조건이 충족되는 한 역할은 암호 없이 연결할 수 있습니다.

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

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

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

 

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

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

PostgreSQL Server를 postgres 사용자로 전환한 다음 PostgreSQL에 액세스합니다. psql 유틸리티를 사용하여 SQL 프롬프트를 표시합니다.

sudo su - postgres
psql

 

 

PostgreSQL 인스턴스와 상호 작용할 수 있습니다. PostgreSQL 셸 유형를 종료하려면 다음과 같이 하십시오.

\q

 

 

PostgreSQL에 액세스하는 또 다른 방법입니다. 사용자를 전환하지 않은 프롬프트는 sudo 명령을 사용합니다.

sudo -u postgres psql

 

 

일반적으로 로컬 호스트에서만 데이터베이스 서버에 postgres로 로그인해야 합니다.

 

 

 

PostgreSQL 역할 및 데이터베이스

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

다음 예에서는 johndb라는 새 역할을 생성하고 데이터베이스에 대한 권한을 부여하는 방법을 보여 줍니다.

 

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

sudo su - postgres -c "createuser john"

 

 

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

sudo su - postgres -c "createdb johndb"

 

 

데이터베이스의 사용자에게 사용 권한을 부여하려면 PostgreSQL 셸에 연결하십시오.

sudo -u postgres psql

 

 

다음 쿼리를 실행합니다.

GRANT ALL PRIVILEGES ON DATABASE johndb TO john;

 

 

 

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

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

PostgreSQL Server에서 구성 파일 postgresql.conf를 열고 CONNECTIONS AND AUTHENTITION 섹션에서 listen_adress = '*'을(를) 입력하십시오.

# /etc/postgresql/12/main/postgresql.conf

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

# - Connection Settings -

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

 

 

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

sudo service postgresql restart

 

 

 

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

출력에 PostgreSQL 서버가 모든 인터페이스(0.0.0.0)에서 수신 대기 중입니다.

ss -nlt | grep 5432

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

 

 

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

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

# /etc/postgresql/12/main/pg_hba.conf

# TYPE  DATABASE        USER            ADDRESS                 METHOD

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

# The user jane can access only the janedb from all locations using 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

 

 

마지막 단계는 방화벽에서 포트 5432를 여는 것입니다.

UFW를 사용하여 방화벽을 관리하고 192.168.1.0/24 서브넷에서 액세스를 허용하려는 경우 다음 명령을 실행합니다.

sudo ufw allow proto tcp from 192.168.1.0/24 to any port 5432

 

 

방화벽이 신뢰할 수 있는 IP 범위의 연결만 허용하도록 구성되어 있는지 확인하십시오.

PostgreSQL를 Ubuntu 20.04 서버에 설치하고 구성하는 방법을 보여드렸습니다. PostgreSQL 12 설명서에서 이 항목에 대한 자세한 내용을 참조하십시오.

 

 

참조

https://linuxize.com/post/how-to-install-postgresql-on-ubuntu-20-04/

반응형