2013-06-18 17 views
29

私はPostgreSQLにDB "test"を持っています。あなたがpg_databaseの組み合わせを使用することができます私は私のdatabase.IをGoogle 検索所有者を取得するためにSQLを記述したいがfound.PleasePostgreSQLのDB所有者名を取得

答えて

36

に私を助けていない答えあなたは

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

システムカタログに、このようなものを見つけることができます、このようにpg_usersシステムテーブルとcurrent_database()機能:あなたはpsqlコマンドラインツールを使用している場合

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

これは動作しません。 –

18

、あなたは単にを使用することができます

+0

これは、データベースのリストを返しますが、データベースの所有者を返します。 – Flimm

+0

@Flimm私はあなたのコメントを理解していません - これは、各DBの所有者と(現在のユーザーが表示する権限を持っている)サーバー上の既存のすべてのDBのリストを返します。 –

+0

あなたはそうです。私は何らかの理由で異なる結果を与える 'pgcli'を使っていました。 – Flimm

0

グループロールが所有するデータベースを持つこの作品は:データベースがロール(ユーザーグループ)とないユーザーによって所有されている場合

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() 
関連する問題