2013-06-18 6 views

Antwort

36

Sie solche Dinge im Systemkatalog

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

finden Sie die Kombination von pg_database verwenden können , pg_users Systemtabellen und current_database() Funktion auf diese Weise:

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

Das wird nicht funktionieren, wenn Datenbank durch eine Rolle (eine Gruppe von Benutzern) und nicht ein Benutzer gehört. –

18

Wenn Sie das psql Kommandozeilen-Tool, können Sie einfachverwenden

+0

Dies gibt eine Liste der Datenbanken zurück, aber die Besitzer der Datenbanken. – Flimm

+0

@Flimm Ich habe Ihren Kommentar nicht verstanden - das gibt eine Liste aller vorhandenen DBs auf dem Server (die der aktuelle Benutzer anzeigen kann) mit dem Besitzer jedes DBs zurück. –

+0

Sie haben Recht. Ich benutzte 'pgcli', was aus irgendeinem Grund zu einem anderen Ergebnis führt. – Flimm

0

Diese Arbeit mit Datenbank von Gruppenrolle im Besitz:

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() 
Verwandte Themen