UFO ET IT

Postgresql 서버의 postgres라는 기본 데이터베이스

ufoet 2020. 12. 10. 20:46
반응형

Postgresql 서버의 postgres라는 기본 데이터베이스


분명히 각 postgresql 서버 설치에 기본적으로 생성되는 데이터베이스 "postgres"가 있습니다. 누구든지 그 용도를 설명하거나 문서화 할 수 있습니까?


실제로 목적이 명확하지 않은 것 같습니다. 문서에 따르면 :

데이터베이스 클러스터 생성은 데이터베이스 데이터가 상주 할 디렉토리 생성, 공유 카탈로그 테이블 (특정 데이터베이스가 아닌 전체 클러스터에 속하는 테이블) 생성, "template1"및 "postgres"데이터베이스 생성으로 구성됩니다.

[...]

postgres 데이터베이스는 사용자, 유틸리티 및 타사 응용 프로그램에서 사용하기위한 기본 데이터베이스입니다.

(출처 : http://www.postgresql.org/docs/current/app-initdb.html )


클라이언트 애플리케이션이 Postgres 서버에 연결될 때 연결할 데이터베이스를 지정해야합니다. 데이터베이스 이름을 모르는 경우 (연결하는 포스트 마스터가 서비스하는 클러스터 내) 다음 명령을 사용하여 데이터베이스 이름 목록을 찾을 수 있습니다.

psql -l

이 명령을 실행하면 psql이 서버에 연결하고 pg_database에서 데이터베이스 이름 목록을 쿼리합니다. 그러나 psql은 Postgres 클라이언트 응용 프로그램이므로 적어도 하나의 데이터베이스 이름 인 Catch-22를 모르면 서버에 연결할 수 없습니다. 따라서 psql은를 실행할 때 "postgres"라는 데이터베이스에 연결하도록 하드 코딩되어 psql -l있지만이 경우 템플릿 데이터베이스를 지정할 수 있습니다.

psql -l -d template1

다른 모든 것을 망칠 때 안전망 인 template0 데이터베이스도 있습니다.

  1. postgres는 연결할 기본 데이터베이스입니다.
  2. template1은 새 데이터베이스를 만들기위한 기본값이며 template1과 같이 생성됩니다.
  3. template0은 template1이 손상되고 (잘못된 설정 등)이 문제를 해결하는 데 많은 시간을 소비하고 싶지 않을 때 유용합니다. template1을 삭제하고 template0 데이터베이스를 사용하여 새 template1을 만듭니다.

위의 주석은 "postgres 데이터베이스를 사용하지 않는 경우 삭제해도 안전한가요?"라고 물었습니다. -CMCDragonkai '16 10 월 22 일 10:37

PostgreSQL 문서에서

초기화 후 데이터베이스 클러스터에는 유틸리티, 사용자 및 타사 응용 프로그램에서 사용하는 기본 데이터베이스 인 postgres라는 데이터베이스가 포함됩니다. 데이터베이스 서버 자체에는 postgres 데이터베이스가 필요하지 않지만 많은 외부 유틸리티 프로그램이 존재한다고 가정합니다.

[참고 : 데이터베이스 클러스터는 실행중인 데이터베이스 서버의 단일 인스턴스에서 관리하는 데이터베이스 모음입니다.]


새 데이터베이스를 만들 때 여러 데이터베이스 연결을 사용하는 경우 모든 연결을 template1또는에 수행 할 수 없습니다 template0.

Postgresql은 새 DB를 생성하는 동안 원본 DB에 다른 연결이 액세스하는 경우 오류를 발생시킵니다.

따라서 새 DB를 만들려면 연결하는 것이 좋습니다 postgres.

여기에 이미지 설명 입력

참고 URL : https://stackoverflow.com/questions/2370525/default-database-named-postgres-on-postgresql-server

반응형