PostgreSQL의 initdb 명령

Bilal Shahid 2023년6월20일
  1. PostgreSQL의 initdb 명령
  2. PostgreSQL에서 initdb 명령 사용
PostgreSQL의 initdb 명령

사용자는 다른 명령을 사용하여 수동으로 PostgreSQL 서버를 설정할 수 있습니다. 먼저, 문서 전반에 걸쳐 설명된 데이터베이스 클러스터를 설정해야 합니다.

초기화 프로세스에서 가장 중요한 BASH 명령 중 하나는 initdb 명령입니다. 따라서 이 기사에서는 특히 initdb 명령을 이해하는 데 중점을 둡니다.

PostgreSQL을 수동으로 설정하기 전에 initdb 명령을 이해하는 것이 중요합니다. PostgreSQL이 초기 단계에서 올바르게 설정되지 않으면 이후 단계에서 쿼리를 실행하지 않습니다.

최악의 경우 PostgreSQL 서버가 데이터 디렉터리 경로를 감지하지 못하고 시작에 실패할 수 있습니다. 따라서 이 글에서는 initdb 명령과 데이터베이스 클러스터에 대해 조금 더 자세히 설명합니다.

PostgreSQL의 initdb 명령

initdb 명령은 데이터베이스 클러스터의 초기화 프로세스에 사용됩니다. initdb 명령을 사용한 초기화 프로세스 후 postgres라는 데이터베이스가 데이터베이스 클러스터 내부에 생성됩니다.

postgres는 사용자, 유틸리티 및 타사 응용 프로그램에서 사용하는 기본 데이터베이스로 작동합니다. 클러스터 내부에 postgres 데이터베이스를 생성하는 것 외에도 각 클러스터 내부에 template1이라는 또 다른 데이터베이스가 생성됩니다.

template1 데이터베이스는 나중에 클러스터 내부에서 생성되는 데이터베이스의 템플릿으로 작동합니다. 데이터베이스 클러스터는 파일 시스템 아래의 데이터 디렉토리임을 기억하십시오.

데이터베이스 클러스터는 모든 데이터가 저장되는 단일 디렉토리입니다. 따라서 initdb 명령은 데이터베이스 클러스터를 초기화하는 위치를 인수로 사용합니다.

모든 위치는 데이터베이스 클러스터에 대한 인수로 제공될 수 있습니다. 데이터는 initdb 명령과 함께 제공되는 원하는 위치에 저장됩니다.

-D 옵션은 initdb 명령과 함께 사용되어 데이터베이스 클러스터의 원하는 위치를 지정합니다. 따라서 데이터베이스 클러스터의 위치를 신중하게 선택해야 합니다.

PostgreSQL에서 initdb 명령 사용

initdb 명령의 정의는 위 섹션에서 설명했습니다. 설명 외에도 명령 뒤에 있는 작업은 이전 섹션에서 자세히 설명했습니다.

이 섹션에서는 initdb 명령의 실행을 철저히 다룹니다. 먼저 initdb 명령을 실행하기 전에 PostgreSQL 사용자 계정에 로그인했는지 확인하십시오.

initdb 명령은 다음과 같이 작동합니다.

> initdb -D /usr/local/pgsql/data

pg_ctl은 서버를 시작하거나 중지하는 데 사용됩니다. 아래와 같이 initdb 명령을 실행하는 데 사용할 수도 있습니다.

> pg_ctl -D /usr/local/pgsql/data initdb

initdb 명령은 데이터베이스 클러스터의 기본 로케일을 초기화합니다. 또한 initdb 명령은 로케일 환경 설정과 기본 문자 세트 인코딩도 지정합니다.

그러나 사용자는 다른 로케일도 지정할 수 있습니다. initdb 명령은 지정된 위치에 디렉토리를 생성하지만 다음과 같은 경우 실패합니다.

  • 상위 디렉토리에 쓰기 권한이 없습니다.
  • 해당 위치에 데이터 디렉토리가 이미 존재합니다.

PostgreSQL 사용자는 데이터 디렉토리 외에 상위 디렉토리도 소유하는 것이 좋습니다. 단, 상위 디렉토리가 존재하지 않는 경우 사용자가 생성해야 합니다.

grandparent 디렉토리에 쓰기가 불가능한 경우 루트 권한을 사용하여 grandparent 디렉토리 내에 상위 및 하위 디렉토리를 만들 수 있습니다. 다음 명령을 사용할 수 있습니다.

> root# mkdir /usr/local/pgsql
> root# chown postgres /usr/local/pgsql
> root# su postgres
> postgres$ initdb -D /usr/local/pgsql/data

데이터베이스 클러스터에 대한 인증된 액세스 보장

initdb 명령은 데이터베이스 클러스터를 초기화하고 생성하는 동안 기본 클라이언트 인증 설정을 사용합니다. 그런 다음 모든 로컬 사용자가 데이터베이스에 연결할 수 있습니다.

로컬 사용자는 데이터베이스의 수퍼유저가 될 수도 있습니다. 데이터베이스에 대한 무단 액세스를 방지하려면 데이터베이스 수퍼유저에 암호를 설정하는 것이 이상적입니다.

다음 명령 중 하나를 사용하여 수행할 수 있습니다.

  • -W 확장자가 있는 initdb 명령
  • --pwprompt 명령
  • pwfile 명령

위의 명령을 사용하여 데이터베이스에 암호를 설정할 수 있습니다. 인증된 사용자만 데이터베이스에 액세스할 수 있습니다.

종속성 초기화 오류

버스 오류 또는 종료 코드 135 오류와 같은 초기화 종속성 오류가 발생하면 아래 설명된 절차를 사용하여 데이터베이스 클러스터를 초기화하십시오.

PostgreSQL 서버 및 클라이언트 도구가 설치되면 사용자는 ROOT(su)로 다음 명령을 실행해야 합니다. service postgresql initdb 명령으로 시작합니다.

PostgreSQL 데이터베이스를 초기화합니다. 다음 명령은 PostgreSQL 서버가 올바르게 실행되고 있는지 확인합니다.

> service postgresql initdb
> systemctl enable postgresql
> systemctl start postgresql

명령은 PostgreSQL 데이터베이스를 초기화합니다. 그러나 먼저 PostgreSQL 서버가 /var/lib/pgsql 디렉토리에 있는지 확인해야 합니다.

또한 PostgreSQL 서버가 실행 중인지 확인하십시오. 예를 들어 ps -ef | grep postgres를 사용하여 PostgreSQL 서버의 실행 상태를 확인할 수 있습니다.

오류가 해결되지 않으면 다음 방법을 시도해 보십시오.

  • 빈 설치 data 디렉토리를 제거해야 합니다.
  • 모든 로그 파일을 정확하게 읽어야 합니다.
  • PostgreSQL 서버의 사용자 또는 비밀번호를 수정할 수 있습니다.
  • PostgreSQL 서버의 데이터 디렉토리를 정리할 수 있습니다.

PostgreSQL 서버의 initdb 명령은 데이터베이스 클러스터를 초기화하고 사용자가 원하는 위치에 설정한다는 점을 기억하십시오. 데이터베이스는 로케일 환경 설정으로 초기화되며 사용자 요청에 따라 변경할 수 있습니다.

작가: Bilal Shahid
Bilal Shahid avatar Bilal Shahid avatar

Hello, I am Bilal, a research enthusiast who tends to break and make code from scratch. I dwell deep into the latest issues faced by the developer community and provide answers and different solutions. Apart from that, I am just another normal developer with a laptop, a mug of coffee, some biscuits and a thick spectacle!

GitHub