在PostgreSql中获取数据库所有者的名称

min*_*dia 50 postgresql

我在PostgreSql中有DB"test".我想写sql来获取所有者我的数据库.我搜索谷歌但回答未找到.请帮助我

DrC*_*sos 59

您可以在系统目录中找到这样的东西

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;
Run Code Online (Sandbox Code Playgroud)


And*_*Boc 35

您可以使用的组合pg_database,pg_users系统表和current_database()功能是这样的:

 SELECT u.usename 
 FROM pg_database d
  JOIN pg_user u ON (d.datdba = u.usesysid)
 WHERE d.datname = (SELECT current_database());
Run Code Online (Sandbox Code Playgroud)


gil*_*ani 32

如果使用psql命令行工具,则可以使用\l

  • @Flimm我听不懂您的评论-这将返回服务器上所有现有DB的列表(当前用户有权查看),并且每个DB的所有者都有该列表。 (2认同)

sol*_*sol 5

可以使用魔法 ::regrole 转换角色 OID 以给出所有者的角色名称:

SELECT datdba::regrole FROM pg_database WHERE datname = 'test' ;
Run Code Online (Sandbox Code Playgroud)