웹사이트 검색

Rocky Linux에서 PostgreSQL 13을 설치하고 사용하는 방법


이 튜토리얼은 다음 OS 버전에 대해 존재합니다.

  • 록키 리눅스 9
  • 록키 리눅스 8.4

이 페이지에서

  1. 전제 조건
  2. PostgreSQL 저장소 추가
  3. Rocky Linux에 PostgreSQL 13 설치
  4. PostgreSQL 데이터베이스 초기화\n
  5. PostgreSQL 배포 보안
  6. 인증 방법 변경
  7. 애플리케이션을 위한 새 사용자 및 데이터베이스 만들기\n
  8. 표 만들기 및 데이터 삽입\n
  9. 결론

PostgreSQL은 확장성과 SQL 준수에 중점을 둔 무료 오픈 소스 데이터베이스 관리 시스템입니다. PostgreSQL은 SQL(관계형) 및 JSON(비관계형) 쿼리를 모두 지원하는 고급 엔터프라이즈급 RDBMS(관계형 데이터베이스 관리 시스템)입니다.

오픈 소스 커뮤니티에서 20년 이상 개발한 매우 안정적인 데이터베이스 관리 시스템이며 안정성, 유연성, 기능 견고성 및 성능에 대해 개발자와 시스템 관리자 사이에서 높은 평판을 얻고 있습니다.

PostgreSQL은 웹 애플리케이션, 모바일 애플리케이션 및 분석 애플리케이션의 기본 데이터베이스로 사용됩니다. 전 세계의 주목할만한 PostgreSQL 사용자로는 Reddit, Skype, Instagram, Disqus, The Guardian, Yandex, Bloomberg, Nokia, BMW 등이 있습니다.

이 가이드에서는 Rocky Linux에 PostgreSQL 데이터베이스를 설치하는 방법, PostgreSQL 데이터베이스 배포 보안, 사용자 및 데이터베이스 관리를 위한 PostgreSQL 쿼리의 기본 사용법을 배웁니다.

전제 조건

  • Rocky Linux 시스템.
  • 루트 또는 sudo 권한이 있는 사용자. 이 사용자는 새 패키지를 설치하고 시스템 전체를 변경하는 데 사용됩니다.\n

PostgreSQL 리포지토리 추가

이 가이드에서는 안정적인 최신 버전의 PostgreSQL v13.4를 설치합니다. 이 버전은 공식 PostgreSQL 리포지토리에서 사용할 수 있으므로 Rocky Linux 시스템에 PostgreSQL 리포지토리를 추가해야 합니다.

1. 다음 명령을 실행하여 Rocky Linux 시스템용 공식 PostgreSQL 리포지토리를 추가합니다.

sudo dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-8-x86_64/pgdg-redhat-repo-latest.noarch.rpm

2. 다음으로 아래 명령을 실행하여 시스템에서 PostgreSQL 리포지토리를 사용할 수 있는지 확인합니다.

sudo dnf -qy repolist

시스템에서 PostgreSQL 리포지토리를 사용할 수 있는 경우 아래 스크린샷과 같이 여러 버전의 PostgreSQL 리포지토리가 표시됩니다.

Rocky Linux에 PostgreSQL 13 설치

공식 PostgreSQL 리포지토리(Rocky Linux 리포지토리가 아님)에서 PostgreSQL을 설치하려면 내장 PostgreSQL 리포지토리 모듈을 비활성화해야 합니다.

1. 내장된 PostgreSQL 모듈 리포지토리를 비활성화하려면 아래의 다음 명령을 실행합니다.

sudo dnf module -qy disable postgresql

이 명령은 자동 모드에서 DNF 명령을 실행하고 PostgreSQL 리포지토리에 대한 모든 gpg 키(-qy 옵션)를 허용합니다.

2. 그런 다음 아래 dnf 명령을 사용하여 PostgreSQL 리포지토리에서 최신 버전의 PostgreSQL 13.4를 설치합니다.

sudo dnf install postgresql13-server

y를 입력하고 Enter 키를 눌러 PostgreSQL 13.x를 설치합니다.

그런 다음 PostgreSQL 설치를 기다립니다.

PostgreSQL 데이터베이스 초기화

다음으로 PostgreSQL 설치가 완료되면 PostgreSQL 구성을 초기화한 다음 PostgreSQL 서비스를 시작하고 활성화해야 합니다.

1. 다음 명령을 실행하여 PostgreSQL 데이터베이스 구성을 초기화합니다.

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

2. 그런 다음 아래 명령을 사용하여 PostgreSQL 서비스를 시작하고 활성화합니다.

sudo systemctl enable postgresql-13
sudo systemctl start postgresql-13

이제 PostgreSQL 서비스가 활성화되어 실행 중이며 부팅할 때마다 자동으로 실행됩니다.

3. 이제 아래 명령을 실행하여 PostgreSQL 서비스를 확인합니다.

sudo systemctl status postgresql-13

PostgreSQL 서비스가 실행 중인 경우 아래와 같이 "활성(실행 중)"과 같은 녹색 출력이 표시됩니다. 그렇지 않으면 오류 메시지 로그 다음에 "failed"와 같은 빨간색 출력이 표시됩니다.

PostgreSQL 배포 보안

설치 중에 PostgreSQL은 새 시스템 사용자와 데이터베이스 사용자 이름을 "postgres"로 생성합니다. 그리고 이 단계에서는 시스템 사용자와 데이터베이스 사용자 모두 "postgres" 사용자의 새 비밀번호를 설정하게 됩니다.

1. 다음 명령을 사용하여 기본 시스템 사용자 "postgres"의 비밀번호를 변경하십시오.

passwd postgres

이제 시스템 사용자 "postgres"의 새 비밀번호를 입력하십시오.

2. 다음으로 "postgres" 데이터베이스 사용자의 암호를 변경하려면 PostgreSQL 셸에 로그인해야 합니다.

먼저 다음 명령을 사용하여 시스템 사용자 "postgres"로 로그인합니다.

su - postgres

이제 아래의 psql 명령을 사용하여 PostgreSQL 셸에 로그인합니다.

psql

다음 쿼리를 실행하여 기본 "postgres" 데이터베이스 사용자에 대한 새 암호를 만듭니다.

ALTER USER postgres WITH PASSWORD 'strongpostgrespassword';

이제 exit를 입력하고 "Ctrl+d"를 눌러 postgres 사용자 셸을 종료하고 로그아웃합니다.

인증 방법 변경

기본적으로 로컬 PostgreSQL 사용자는 피어 방법을 사용하여 PostgreSQL 셸에 연결합니다. 피어 인증 방법은 로컬 연결에 대해서만 작동합니다. 개발 환경에서는 이러한 유형의 인증을 사용할 수 있지만 프로덕션 환경에서는 암호 기반 인증 방법을 사용하는 것이 좋습니다.

이 단계에서는 scram-sha-256을 사용하여 기본 피어 인증 방법을 비밀번호 인증으로 변경하는 방법을 배웁니다.

1. 먼저 다음 명령을 사용하여 PostgreSQL 셸에 로그인합니다.

sudo -u postgres psql

이제 다음 쿼리를 실행하여 PostgreSQL 구성 pg_hba.conf의 위치를 확인합니다.

SHOW hba_file;
SHOW password_encryption;

아래와 같이 출력이 표시됩니다.

PostgreSQL 구성 "pg_hba.conf"는 /var/lib/pgsql/13/data 디렉터리에 있으며 RHEL 기반 운영 체제에서 PostgreSQL의 기본 암호 암호화는 scram-sha-256입니다.

이제 \\q를 입력하여 PostgreSQL 셸을 종료하고 종료합니다.

2. 다음으로 작업 디렉토리를 /var/lib/pgsql/13/data로 변경하고 nano 편집기를 사용하여 구성 pg_hba.conf를 편집합니다.

cd /var/lib/pgsql/13/data/
nano pg_hba.conf

줄 맨 아래에서 아래와 같이 로컬 인증 방법을 scram-sha-256으로 변경합니다.

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "local" is for Unix domain socket connections only
local   all             all                                     scram-sha-256
# IPv4 local connections:
host    all             all             127.0.0.1/32            scram-sha-256
# IPv6 local connections:
host    all             all             ::1/128                 scram-sha-256

이제 Ctrl+x를 누르고 y를 입력한 다음 "Enter"를 눌러 저장하고 종료합니다.

이 구성을 사용하면 PostgreSQL 셸에 로그인하기 위한 암호를 묻는 메시지가 표시됩니다.

3. 그런 다음 다음 명령을 사용하여 PostgreSQL 서비스를 다시 시작하여 새 구성을 적용합니다.

sudo systemctl restart postgresql-13

이제 PostgreSQL 셸에 액세스할 때마다 인증을 위해 암호를 입력해야 합니다.

4. 암호 인증 구성을 확인하려면 다음 명령을 사용하여 PostgreSQL 셸에 로그인합니다.

su - postgres
psql

이제 기본 사용자 postgres의 비밀번호를 묻는 메시지가 표시됩니다.

postgres 데이터베이스 사용자의 암호를 입력하고 Enter 키를 누릅니다. 암호가 맞으면 다음과 같이 PostgreSQL 셸이 표시됩니다. 그렇지 않으면 암호가 올바르지 않기 때문에 FATAL 오류가 표시됩니다.

또한 아래와 같이 한 줄 명령을 사용하여 PostgreSQL 셸에 로그인할 수 있습니다.

# Log in as default "postgres" user
sudo -u postgres psql

# Log in as another user
sudo -u postgres psql -U username

애플리케이션을 위한 새 사용자 및 데이터베이스 생성

이 단계에서는 PostgreSQL에서 새 사용자 및 데이터베이스를 만드는 방법을 배웁니다.

1. 아래 명령을 실행하여 PostgreSQL 셸에 로그인합니다.

sudo -u postgres psql

이제 PostgreSQL 사용자 postgres의 비밀번호를 입력하십시오.

2. 아래의 PostgreSQL 쿼리를 실행하여 비밀번호 johndoestrongpassword로 새 사용자 johndoe를 생성하고 새 데이터베이스 및 역할을 생성할 수 있는 사용자 권한을 부여합니다.

CREATE USER johndoe WITH 
CREATEDB
CREATEROLE
PASSWORD 'johndoestrongpassword';

그런 다음 다음 쿼리를 사용하여 새 사용자를 확인합니다.

\du

이제 아래와 같이 역할 생성 및 DB 생성 역할 목록이 있는 새 사용자 johndoe를 볼 수 있습니다.

3. 그런 다음 PostgreSQL에서 새 사용자 데이터베이스를 생성하려면 다음 쿼리를 실행합니다.

CREATE DATABASE johndoe OWNER johndoe;

이제 다음 쿼리를 사용하여 새 데이터베이스를 확인합니다.

\l

그러면 아래 스크린샷과 같이 소유자 johndoe와 함께 새 데이터베이스 johndoe가 표시됩니다.

테이블 생성 및 데이터 삽입

새로운 데이터베이스와 사용자를 생성한 후, 테이블을 생성하고, 데이터를 입력하고, 데이터베이스에서 데이터를 보여주는 방법을 배우게 됩니다.

1. 이제 다음 명령을 사용하여 사용자 johndoe로 PostgreSQL 셸에 로그인합니다.

su - postgres
psql -U johndoe

또는 아래와 같이 한 줄 명령을 사용할 수 있습니다.

sudo -u postgres psql -U johndoe

이제 PostgreSQL 사용자 johndoe의 암호를 입력하고 Enter 키를 눌러 로그인합니다.

스크린샷에서 볼 수 있듯이 이제 johndoe=> 데이터베이스에서 PostgreSQL 셸에 로그인했습니다.

2. 이제 다음 쿼리를 실행하여 일부 열 id, 이름, 나이, 주소 및 급여가 포함된 새 테이블 users를 생성합니다.

CREATE TABLE users (
   id INT PRIMARY KEY     NOT NULL,
   name           TEXT    NOT NULL,
   age            INT     NOT NULL,
   address        CHAR(50),
   salary         REAL
);

현재 데이터베이스에서 사용 가능한 테이블을 표시하려면 아래와 같이 \\d 쿼리를 사용하십시오.

\d

테이블에 열을 표시하려면 아래와 같이 테이블 이름 다음에 동일한 쿼리를 사용할 수 있습니다.

\d users

아래는 비슷한 출력입니다.

3. 다음으로 아래와 같이 삽입 쿼리를 사용하여 테이블에 새 데이터를 추가합니다.

INSERT INTO users (id,name,age,address,salary) VALUES (1, 'Paul', 32, 'California', 20000.00);
INSERT INTO users (id,name,age,address,salary) VALUES (2, 'Jesse', 35, 'Mexico', 30000.00);
INSERT INTO users (id,name,age,address,salary) VALUES (3, 'Linda', 27, 'Canada', 40000.00);

4. 그런 다음 아래와 같이 선택 쿼리를 사용하여 사용 가능한 모든 데이터를 표시할 수 있습니다.

SELECT * FROM users;

* 옵션은 테이블 내부의 모든 열을 덤프합니다.

열을 지정하려면 아래와 같이 선택 쿼리를 사용할 수 있습니다.

SELECT name,age,salary FROM users;

아래와 비슷한 출력이 표시됩니다.

결론

축하합니다! 이제 Rocky Linux에 PostgreSQL을 설치하는 방법을 배웠습니다. 또한 안전한 방식(최소)으로 PostgreSQL을 배포하는 방법과 사용자, 데이터베이스 및 테이블 관리를 위한 PostgreSQL 쿼리의 기본 사용법을 배웠습니다.