Содержание

Использование ролей для подключения в 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, а также базовые аспекты работы с ней. Более детальную информацию по работе с данной СУБД можно узнать из официальной документации.