여러 데이터베이스가 실행되는 PostgreSQL 서버가 있습니다. 데이터베이스 중 하나를이라고 postgres
하며 처음부터 시작했습니다. 내부에있는 테이블을 볼 수 없으며 명시 적으로 사용한 적이 없지만 모든 사용자가 데이터베이스 내에 테이블을 만들 수 있음을 알았습니다 (이것은 내가 원하는 것이 아닙니다-관리자를 제외한 다른 사용자는 원하지 않습니다) 모든 테이블).
서버가 정상적으로 작동하는 데 필요한 특수 데이터베이스라고 생각하지만 그 목적은 무엇입니까? 내부에 어떤 종류의 데이터가 저장되어 있습니까? 다른 데이터베이스에 대한 메타 데이터 (예 : information_schema
?)를 보유 하고 있습니까? connect
공개적으로이 데이터베이스에 대한 권한을 취소하면 불쾌한 일이 발생할 수 있습니까 ? 아니면 떨어 뜨린다면?
나는 30 분 동안 구글 검색했지만 단어 postgres
는 사용자 postgres
와 DBMS 자체 에도 사용 되기 때문에 항상 전혀 관련이 없습니다 .
답변
특별한 것은 없습니다. PostgreSQL 설명서, 데이터베이스 생성에 설명 된 대로 다른 데이터베이스를 생성하려면 데이터베이스에 연결되어 있어야합니다.
CREATE DATABASE
명령 을 실행하려면 데이터베이스 서버에 연결해야하므로 주어진 사이트에서 첫 번째 데이터베이스를 작성하는 방법에 대한 의문이 남아 있습니다. 첫 번째 데이터베이스는initdb
데이터 저장 영역이 초기화 될 때 항상 명령으로 작성됩니다 . (17.2 절 참조)이 데이터베이스를이라고postgres
합니다. 따라서 첫 번째 “일반”데이터베이스를 만들려면에 연결할 수 있습니다postgres
.
그리고 템플릿 데이터베이스에서 :
참고 :
template1
및template0
이름이 있다는 사실을 넘어 특별한 상황이없는template1
의 기본 소스 데이터베이스 이름입니다CREATE DATABASE
. 예를 들어, 악영향없이template1
이를 삭제 하고 다시 만들 수 있습니다template0
. 부주의하게 정크를 여러 개 추가 한 경우이 작업 과정을 사용하는 것이 좋습니다template1
. (을 (를) 삭제하려면template1
이 있어야합니다pg_database.datistemplate = false
.)
postgres
데이터베이스는 데이터베이스 클러스터가 초기화 될 때도 생성됩니다. 이 데이터베이스는 사용자와 응용 프로그램이 연결하는 기본 데이터베이스로 사용됩니다. 그것은 단순히의 복사template1
및 하락하고 필요한 경우 다시 만들 수 있습니다.