Do czego służy specjalna baza danych „postgres”?


18

Mam serwer PostgreSQL z kilkoma bazami danych. Jedna z baz danych jest nazywana postgresi była tam od samego początku. Nie widziałem żadnych tabel w środku i nigdy nie korzystałem z nich jawnie, ale zauważyłem, że każdy użytkownik może tworzyć tabele w bazie danych (nie tego chcę - nie chcę, aby tworzyli użytkownicy oprócz administratora) dowolne stoły w dowolnym miejscu).

Mam wrażenie, że jest to jakaś specjalna baza danych wymagana do normalnej pracy serwera, ale jaki jest dokładnie jej cel? Jakie dane są (lub mogłyby być) przechowywane w środku? Czy przechowuje metadane dotyczące innych baz danych (np. information_schema?). Czy może się zdarzyć coś nieprzyjemnego, jeśli odwołam connectuprawnienia do tej bazy danych publicznie? A może nawet go upuszczę?

Googlowałem przez pół godziny, ale zawsze otrzymywałem zupełnie niezwiązane rzeczy, ponieważ słowo postgresto jest również używane dla użytkownika postgresi samego DBMS.

Odpowiedzi:


31

Nie ma w tym nic specjalnego. Jak opisano w dokumentacji PostgreSQL, Tworzenie bazy danych , musisz być podłączony do bazy danych, aby utworzyć inną:

Ponieważ musisz wykonać połączenie z serwerem bazy danych, aby wykonać CREATE DATABASEpolecenie, pozostaje pytanie, w jaki sposób można utworzyć pierwszą bazę danych w dowolnej witrynie. Pierwsza baza danych jest zawsze tworzona przez initdbpolecenie podczas inicjowania obszaru przechowywania danych. (Patrz rozdział 17.2.) Ta baza danych jest nazywana postgres. Aby stworzyć pierwszą „zwykłą” bazę danych, z którą można się połączyć postgres.

oraz w bazach danych szablonów :

Uwaga: template1 i template0nie mają żadnego specjalnego statusu poza faktem, że nazwa template1jest domyślną nazwą źródłowej bazy danych dla CREATE DATABASE. Na przykład można upuścić template1i odtworzyć go template0bez żadnych złych efektów. Taki sposób postępowania może być wskazany, jeśli ktoś nieostrożnie doda kilka śmieci template1. (Aby usunąć template1, musi mieć pg_database.datistemplate = false.)

Baza postgresdanych jest również tworzona podczas inicjowania klastra bazy danych. Ta baza danych jest przeznaczona jako domyślna baza danych dla użytkowników i aplikacji, z którymi można się połączyć. Jest to po prostu kopia template1i można go w razie potrzeby usunąć i odtworzyć.


3
Tak. W praktyce powinieneś pozostawić to puste i niezmienione jako wygodne miejsce do połączenia. Jest to naprawdę brodawka w PostgreSQL, co jest konsekwencją faktu, że PostgreSQL nie pozwala ci łączyć się z „brakiem konkretnej bazy danych”, jak robią to inne DBMS.
Craig Ringer

1
Wielkie dzięki, to dobra odpowiedź! Odmówiłem dostępu użytkownikom publicznym postgresi wszystko nadal działa, z wyjątkiem jednej rzeczy: pgAdmin III już się nie łączy, chyba że podam w Maintenance DBpolu docelową bazę danych . Wygląda na to, że wcześniej łączył się z postgresbazą danych.
R Kiselev

@RKiselev Tak, to działa w ten sposób. Tak jak napisał ypercube , jest to domyślna baza danych, z którą można się połączyć.
Marcin S.,

1
Pgadmin ma właściwość „bazy danych konserwacji”. Po prostu zmień na db, z którym chcesz się połączyć
Sahap Asci,

@RKiselev: Informacje o pgAdmin i jego „bazie danych konserwacji”: O co DB konserwacji pyta pgAdmin?
Erwin Brandstetter,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.