Подтвердить что ты не робот

Получить имя владельца базы данных в PostgreSql

У меня есть DB "test" в PostgreSql. Я хочу написать sql, чтобы получить владельца моей базы данных. Я искал Google  но ответ не найден. Пожалуйста, помогите мне

4b9b3361

Ответ 1

Вы можете найти такие вещи в системном каталоге

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;

Ответ 2

Вы можете использовать комбинацию системных таблиц 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());

Ответ 3

Если вы используете инструмент командной строки psql, вы можете просто использовать \l

Ответ 4

Эта работа с базой данных, принадлежащей групповой роли:

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

Ответ 5

Следующий запрос отображает информацию для всех таблиц в общедоступной схеме:

 select t.table_name, t.table_type, c.relname, c.relowner, u.usename
 from information_schema.tables t
 join pg_catalog.pg_class c on (t.table_name = c.relname)
 join pg_catalog.pg_user u on (c.relowner = u.usesysid)
 where t.table_schema='public';

источник:http://cully.biz/2013/12/11/postgresql-getting-the-owner-of-tables/

Ответ 6

Помните в SQL, включая postgres, что у вас есть иерархия в данном экземпляре сервера sql: catalog/db > schema > tables

При поиске perms/метаданных для в каталоге, который вы хотите посмотреть information_schema

Пример: information_schema.role_table_grants для таблицы perm

Пример: information_schema.role_usage_grants для SEQUENCE/схема Perms

https://www.postgresql.org/docs/current/information-schema.html

Для config/meta на уровне каталога/уровня базы данных вам нужно найти другой уровень в pg_catalog.

https://www.postgresql.org/docs/current/catalogs.html

Пример:

SELECT dbs.datname, roles.rolname
  FROM pg_catalog.pg_database dbs, pg_catalog.pg_roles roles
 WHERE dbs.datdba = roles.oid;

pg_catalog.pg_database.datdba имеет идентификатор роли владельца.

pg_catalog.pg_roles.oid имеет идентификатор роли владельца (присоединиться)

pg_catalog.pg_roles.rolname имеет имя/строку роли владельца