В данной статье будет показано как посмотреть список пользователей в PostgreSQL. Это популярная свободная объектно-реляционная СУБД. Разработана сообществом PostgreSQL. СУБД широко применяется в различных сферах - от простых веб-сайтов до интернет-магазинов и государственных сайтов.
Имеет богатую функциональность, включающую в себя различные встроенные функции, поддержку многомерных массивов, геометрических данных. Также поддерживает JSON и наследование.
Содержание статьи
Список пользователей PostgreSQL
Вывести список всех пользователей, присутствующих в СУБД PostgreSQL можно двумя способами - при помощи встроенной команды в оболочке psql - \du и при помощи SQL запроса. Далее будут рассмотрены оба способа.
Вывод списка пользователей при помощи команды \du
Для использования данного метода необходимо перейти в оболочку psql. psql - это терминальный клиент для работы с PostgreSQL. Позволяет выполнять различные запросы к базе данных. Также в psql присутствуют так называемые метакоманды одной из которых как раз является команда du. Для входа в оболочку psql необходимо выполнить следующую команду в терминале:
sudo -u postgres psql
После ввода пароля пользователя, приглашение к вводу примет следующий вид:
postgres=#
Это означает что оболочка запущена от пользователя postgres. Данный пользователь присутствует в системе по умолчанию и имеет максимальные привилегии.
Для вывода списка всех пользователей присутствующих в PostgreSQL необходимо выполнить команду:
\du
Команда \du выводит список пользователей (в терминологии postgres вместо слово пользователь используется слово роль) а также два дополнительных столбца - список атрибутов роли и членство роли если таковы имеются. Для выхода из команды необходимо нажать на клавишу q.
Вывод списка пользователей при помощи SQL запроса
Также вывести список пользователей можно при помощи SQL запроса. Для этого необходимо ввести следующий запрос в psql:
SELECT usename, usesuper, usecreatedb FROM pg_catalog.pg_user;
Помимо вывода имена пользователей данный запрос также сообщит является ли пользователь суперпользователем (аналог пользователя root в Linux системах).
Если у пользователя есть права суперпользователя, то отображается бука t - True (права есть) в противном случае отображается бука f - False (прав нет). А также будет отображено есть ли у пользователя права на создание баз данных (t - да, f - нет).
Выводы
В данной небольшой статье было показано как вывести список пользователей PostgreSQL, присутствующих в СУБД. Существует два метода. Какой использовать зависит исключительно от ваших предпочтений. Если у вас остались вопросы задавайте их в комментариях!
А чтобы не возникло ощущения что в PostgreSQL только две роли - лучше обращаться к представлению pg_roles:
SELECT * FROM pg_catalog.pg_roles;
Там будут _все_ созданные роли в базах данных (включая и те, что выводятся в pg_user).
"postgres=# Это означает что оболочка запущена от пользователя postgres. "
Это утверждение неверно. Такая надпись в приглашении обозначает, что вы подключены к бд postres, а не то что вы работает от этого пользователя. Ибо когда вы заходите в командную оболочку субд без явного указания к какой бд необходимо подключиться, субд автоматически пытается соеденить пользователся с одноименной бд, а если таковой не найдется, то выведет соответствующее предупреждение и команда не будет выполнена. Поскольку бд с именем postgres создается по умолчанию при установке, то такой ошибки вы не увидите при подключении от пользователя postgres. Для явного указания бд при входе необходимо использовать параметр -d после которого указать название бд. Единственное что говорит о пользователе в строке-приглашении это решетка, она обозначает, что вы подключены к бд с правами суперпользователя, в ином случае будет угловая скобка.