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
После входа мы можем посмотреть данные о текущем подключении с помощью команды \conninfo.
Заключение
В данной статье описаны способы установки PostgreSQL, а также базовые аспекты работы с ней. Более детальную информацию по работе с данной СУБД можно узнать из официальной документации.