===== Использование ролей для подключения в PostgreSQL =====
После установки PostgreSQL использует метод аутентификации ident. Данный способ аутентификации использует учетные записи операционной системы в качестве разрешённого имени пользователя базы данных. Это означает, что если в операционной системе существует пользователь с таким же именем, что и роль в Postgres, то он может выполнять вход в качестве данной роли.
По умолчанию в ходе установки Postgres создает учетную запись c названием **postgres**, которая связана с аналогичной ролью. Поэтому для использования Postgres нам необходимо войти в эту учетную запись. Сделать это мы можем несколькими способами.
==== Переключение на учетную запись postgres ====
Для переключения учетной записи мы можем использовать следующую команду:
$ sudo -i -u postgres
После этого мы можем использовать командную строку PostgresSQL для управления нашими базами данных:
$ psql
Для выхода из командной строки PostresSQL используем команду:
postgres=# \q
С помощью этой команды мы вернемся к учетной записи **postgres**.
==== Используем командную строку postgres без переключения учетной записи ====
Чтобы начать использовать командную строку postgres без переключения учетной записи мы можем использовать следующую команду:
$ sudo -u postgres psql
Данный способ позволит использовать командную строку postgres без необходимости ввода промежуточной команды.
===== Создание новой роли в PostgreSQL =====
На текущий момент у нас существует только роль **postgres**. Для создания новой роли мы можем использовать команду **createrole** с флагом **--interactive**. При указание данного флага будет запрошено имя для создаваемой роли и права, которые необходимо ей присвоить. Если планируется вход по паролю для создаваемого пользователя, то мы можем также добавить флаг **-P**. Либо можно использовать команду **\password** уже после создания пользователя.
Если у вас уже выполнен вход под пользователем postgres, вы можете создать новую роль следующим образом:
postgres@server:~$ createuser --interactive -P
Если вы предпочитаете работать без переключения учетной записи вы можете использовать следующую команду для создания роли:
$ sudo -u postgres createuser --interactive -P
В результате выполнения одной из команд выше вам потребуется указать название роли и права которые ей необходимо предоставить.
Output
Enter name of role to add: john
Enter password for new role:
Shall the new role be a superuser? (y/n) y
Посмотреть список всех ролей можно следующим образом:
# если вы вошли под пользователем postgres
postgres@server:~$ psql
postgres=# select rolname from pg_roles;
# или так
postgres=# \du
Этот запрос выведет список всех имеющихся ролей.
==== Удаление пользователя ====
Если вам необходимо удалить только, что созданного пользователя можно использовать команду **dropuser**:
# если вы вошли под пользователем postgres
postgres@server:~$ dropuser john
# без переключения учетной записи
$ sudo -u postgres dropuser john
Для получения более детальной информации по команде **dropuser** используем **man dropuser**.
===== Создание новой базы данных =====
Для создания новой базы данных можно использовать команду **createdb**. Чтобы указать пользователя в качестве владельца создаваемой базы мы можем добавить флаг **-O** :
# если вы вошли под пользователем postgres
postgres@server:~$ createdb dbname -O john
# без переключения учетной записи
$ sudo -u postgres createdb dbname -O john
Чтобы посмотреть список все баз данных заходим в psql и выполняем команду **\l**:
# если вы вошли под пользователем postgres
postgres@server:~$ psql
postgres=# \l
Вывод команды покажет не только список существующих баз данных, но и их владельцев. Для переключения между базами данных можем использовать команду **\connect dbname**.
===== Подключение к базе данных с новой ролью =====
Поскольку мы не создавали системного пользователя john, то нам необходимо явно указать параметры подключения:
postgres@server:~$ psql -U john -d dbname -h 127.0.0.1 --password
Важно отметить, что при таком подключение при создании пользователя **john** необходимо обязательно задать ему пароль.
После входа мы можем посмотреть данные о текущем подключении с помощью команды **\conninfo**.
===== Заключение =====
В данной статье описаны способы установки PostgreSQL, а также базовые аспекты работы с ней. Более детальную информацию по работе с данной СУБД можно узнать из официальной документации.