2013-06-18 17 views

Odpowiedz

36

Można znaleźć takie rzeczy w katalogu systemowym

SELECT d.datname as "Name", 
pg_catalog.pg_get_userbyid(d.datdba) as "Owner" 
FROM pg_catalog.pg_database d 
WHERE d.datname = 'your_name' 
ORDER BY 1; 
27

można użyć kombinacji pg_database , pg_users tabele systemowe i current_database() funkcja w ten sposób:

SELECT u.usename 
FROM pg_database d 
    JOIN pg_user u ON (d.datdba = u.usesysid) 
WHERE d.datname = (SELECT current_database()); 
+0

To nie będzie działać, jeśli baza danych jest własnością roli (grupa użytkowników), a nie użytkownika. –

18

w przypadku korzystania z narzędzia psql wiersza polecenia, można po prostu użyć \l

+0

Powoduje wyświetlenie listy baz danych, ale właścicieli baz danych. – Flimm

+0

@Flimm Nie zrozumiałem twojego komentarza - to zwraca listę wszystkich istniejących baz danych na serwerze (które bieżący użytkownik ma uprawnienia do wyświetlania) z właścicielem każdego DB. –

+0

Masz rację. Używałem 'pgcli', które z jakiegoś powodu daje inny wynik. – Flimm

0

Ta praca z bazą danych posiadanych przez roli grupowej:

SELECT 
    U.rolname 
    ,D.datname 
FROM 
    pg_authid AS U JOIN pg_database AS D ON (D.datdba = U.oid) 
WHERE 
    D.datname = current_database() 
Powiązane problemy