2009-12-31 9 views
10

Coming z MySQL i nie wiedząc o role ja roztargnieniem próbował tegoRóżnica między ALTER roli w createdb i Grant utworzone na TABLESPACE

GRANT CREATE ON TABLESPACE pg_default TO username; 

To nie miało pożądany efekt. Polecenie, którego szukałem, było następujące:

ALTER ROLE username WITH CREATEDB; 

Ale jaka jest różnica? Czy przyznanie komuś roli CREATEDB niejawnie daje jej CREATE ON TABLESPACE ...? Czy jest stół, na którym wszystko widzę?

Z docs Grant utworzone na drodze TABLESPACE (podkreślenie moje):

Dla tabel pozwala tabele indeksy i pliki tymczasowe być utworzony w ramach tabel i pozwala baz danych być utworzone, które mają tabelę jako domyślny tabel tabel . (Zauważ, że cofnięcie tego przywilej nie zmieni położenie istniejących obiektów.)

Odpowiedz

11

Są to zupełnie inne przywileje. CREATEDB oznacza, że ​​rola może tworzyć bazę danych. Jeśli twoja rola tego nie ma, nie może tworzyć baz danych, kropka.

Przyznanie CREATE dla obszaru tabel do roli oznacza, że ​​rola będzie mogła używać tego obszaru tabel jako domyślnego obszaru tabel dla bazy danych. Zatem rola CREATEDB będzie w stanie stworzyć bazę danych; po prostu nie w tym obszarze tabel. Zauważ, że zawsze istnieje pg_default tablespace, który będzie używany jako domyślny obszar tabel dla baz danych, które w przeciwnym razie nie mają domyślnego obszaru tabel.

1

Wygląda na to pierwsze pismo daje możliwość tworzenia tabel. Są to fizyczne pliki (lub spacje na urządzeniu pamięci), które przechowują dane/indeksy/... bazy danych.

Skutecznie dałeś dwa różne prawa za pomocą poleceń.

Powiązane problemy