Установка и первоначальная настройка PostgreSQL в Ubuntu

23 января, 2021 18:39
Admin
23 января, 2021 18:44

PostgreSQL является самой продвинутой свободно распространяемой СУБД с очень хорошей поддержкой стандарта SQL. В данной статье мы разберем, как установить PostgreSQL в Ubuntu и как произвести первоначальную настройку для того чтобы начать работу с ней.

Установка из репозитория ubuntu

Сперва обновим локальный индекс пакетов, а затем установим posgresql:

# обновление индекса ubuntu 18.04
$ sudo apt update

# установка текущей версии posgresql ubuntu 18.04
$ sudo apt install postgresql

# обновление индекса ubuntu 16.04 и выше
$ sudo apt-get update

# установка текущей версии posgresql ubuntu 16.04 и выше
$ sudo apt-get install postgresql

Если требуется установить другую версию PostgreSQL мы можем воспользоваться инструкцией ниже.

Установка из репозитория postgresql

Установить другую версию мы можем из репозитория postgresql:

# Добавим ссылку на репозиторий в sources.list.d
$ sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'

# Импортируем ключ репозитория
$ wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -

# Обновим локальный индекс
$ sudo apt-get update

# Устанавливаем нужную версию
$ sudo apt-get -y install postgresql-12

Кроме того, мы можем установить postgresql с помощью docker. О том как это можно сделать написано в данной статье: Установка PostgreSQL с помощью docker-compose.

После установки мы можем приступать к настройке ролей и созданию баз данных.

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