Psql

如何使用 psql 按所有者過濾數據庫?

  • June 12, 2015

我知道我可以使用以下命令列出我的 postgres 數據庫:

# list only the databases
psql -U openerp -q -t -c "select datname from pg_database;" template1

要麼

# show a full listing of databases
psql template1 -U openerp -l

如何按所有者“openerp”過濾數據庫?datdba欄位只是一個數字……我該如何映射它?

對於這樣的事情,您需要pg_database直接查詢。該owner欄位是對 的引用pg_catalog.pg_authid.oid,但這是一個僅超級使用者可訪問的表。有一個視圖,pg_catalog.pg_roles將 id 作為oid屬性公開,因此您可以:

select 
 datname,
 rolname AS dbowner
from pg_database d 
    inner join pg_roles r on (d.datdba = r.oid);

引用自:https://dba.stackexchange.com/questions/103839