Установка и использование PostgreSQL 9.4 в Debian 8

Реляционные базы данных – это основа организации данных для любых целей. Одной из самых популярных реляционных СУБД является PostgreSQL.

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

Данное руководство поможет установить PostgreSQL на сервер Debian 8 и начать работу с данными.

Требования

  • Предварительно настроенный сервер Debian 8; о начальной настройке сервера можно прочитать здесь.
  • Не-root пользователь с доступом к sudo.

Установка PostgreSQL

Прежде чем приступить к установке PostgreSQL, нужно обновить список пакетов системы:

sudo apt-get update
Reading package lists... Done.

За запуск postgresql отвечают следующие пакеты:

  • postgresql-9.4: пакет сервера PostgreSQL.
  • postgresql-client-9.4: клиент PostgreSQL.
  • postgresql: метапакет; подробнее об этом – здесь.

Чтобы установить пакет postgresql-9.4:

sudo apt-get install postgresql-9.4 postgresql-client-9.4

Для подтверждения нажмите Y, после чего пакеты будут загружены и установлены.

Проверка установки

Чтобы убедиться в том, что программа установлена успешно, используйте команду ps:

# ps -ef | grep postgre

В терминале должно появиться:

postgres 32164     1  0 21:58 ?        00:00:00 /usr/lib/postgresql/9.4/bin/postgres -D /var/lib/   postgresql/9.4/main -c config_file=/etc/postgresql/9.4/main/postgresql.conf
postgres 32166 32164  0 21:58 ?        00:00:00 postgres: checkpointer process
postgres 32167 32164  0 21:58 ?        00:00:00 postgres: writer process
postgres 32168 32164  0 21:58 ?        00:00:00 postgres: wal writer process
postgres 32169 32164  0 21:58 ?        00:00:00 postgres: autovacuum launcher process
postgres 32170 32164  0 21:58 ?        00:00:00 postgres: stats collector process

Если на экране появился такой вывод, значит, установка прошла успешно.

Доступ к базе данных PostgreSQL

В системе Debian PostgreSQL по умолчанию устанавливается с учётной записью пользователя postgres. Чтобы подключиться к БД, нужно перейти в сессию пользователя postgres из сессии root (команда не работает с sudo):

su - postgres

Теперь сессия postgres является текущей. Чтобы запустить PostgreSQL, введите:

psql

Это откроет консоль PostgreSQL; на экране появится:

psql (9.4.2)
Type "help" for help.
postgres=#

Чтобы закрыть консоль psql, введите:

\q

Создание ролей

По умолчанию Postgres использует понятие ролей. В целом роли очень похожи на обычные учётные записи Unix. Но поскольку PostgreSQL не различает пользователей и группы, роль является некоторым синтезом этих двух понятий.

По умолчанию PostgreSQL использует модель аутентификации ident, которая связывает роли PostgreSQL со стандартными пользователями Unix/Linux. Открыть существующую роль можно при помощи связанной с ней учётной записи Linux.

Итак, во время установки был создан Linux-пользователь postgres, который связан со стандартной ролью Postgres.

Для создания ролей используется команда createuser. Эту команду нужно выполнить в сессии пользователя postgres, не в консоли PostgreSQL:

createuser --interactive

По сути это интерактивный скрипт оболочки, вызывающий команды PostgreSQL, необходимые для создания пользователя. Скрипт задаст несколько вопросов: имя роли, привилегии (superuser или нет), право роли на создание новых БД и новых ролей.

Более подробную информацию можно найти в справочнике:

man createuser

Создание базы данных PostgreSQL

PostgreSQL поставляется со стандартными ролями, которые связываются с системными пользователями.

Примечание: Более подробную информацию можно найти на сайте postgresql.org.

Кроме того, по умолчанию подразумевается, что роль будет подключаться к одноименной БД (например, роль test1 будет пытаться подключиться к базе данных test1).

Чтобы создать БД, запустите команду в сессии пользователя postgres:

createdb test1

Эта команда создаст тестовую БД по имени test1.

Подключение к PostgreSQL при помощи нового пользователя

Предположим, у вас есть пользователь Linux по имени test1, одноименная роль PostgreSQL и одноименная БД.

Чтобы сменить системного пользователя и перейти в сессию test1, введите:

su - test1

Чтобы подключиться к БД test1 при помощи одноименной роли PostgreSQL, используйте команду:

psql

На экране появится командная строка PostgreSQL для нового пользователя test1.

Создание и удаление таблиц

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

Синтаксис этой команды выглядит так:

CREATE TABLE table_name (
column_name1 col_type (field_length) column_constraints,
column_name2 col_type (field_length),
column_name3 col_type (field_length)
);

Как видите, для таблицы нужно выбрать имя, определить столбцы, тип столбцов и максимальную длину поля. Опционально можно также установить ограничения для каждого столбца.

Примечание: Подробнее о работе с таблицами можно прочитать в руководстве «Управление таблицами PostgreSQL».

К примеру, тестовая страница может иметь такой вид:

CREATE TABLE playground (
equip_id serial PRIMARY KEY,
type varchar (50) NOT NULL,
color varchar (25) NOT NULL,
location varchar(25) check (location in ('north', 'south', 'west', 'east', 'northeast', 'southeast', 'southwest', 'northwest')),
install_date date
);

Данная таблица описывает всё оборудование. Таблица начинается со столбца ID, который указывает порядковый номер записи. Этот столбец был ограничен по PRIMARY KEY, что значит, что значения должны быть уникальными и не должны быть нулём.

Длина поля остальных двух столбцов не ограничена; дело в том, что задавать длину некоторых столбцов необязательно, так как длина задаётся типом данных.

Столбцы type и color не могут быть пустыми. Столбец location ограничен восемью возможными значениями. Столбец date указывает дату установки оборудования.

Чтобы просмотреть таблицу, используйте команду \dt командной строки psql.

List of relations
Schema |    Name    | Type  |  Owner
-------+------------+-------+----------
public | playground | table | postgres

Добавление, запрос и удаление данных

Теперь попробуйте добавить в таблицу данные.

Для этого нужно вызвать целевую таблицу, назвать столбцы и ввести данные, которые нужно добавить. К примеру, чтобы добавить горку (slide) и качели (swing):

INSERT INTO playground (type, color, location, install_date) VALUES ('slide', 'blue', 'south', '2014-04-28');
INSERT INTO playground (type, color, location, install_date) VALUES ('swing', 'yellow', 'northwest', '2010-08-16');

Обратите внимание на следующие моменты:

  • Имя таблицы не нужно брать в кавычки.
  • Значения столбцов необходимо взять в кавычки.
  • В столбец equip_id не нужно добавлять данные; его значения генерируются автоматически.

Просмотрите добавленные данные:

SELECT * FROM playground;
equip_id | type  | color  | location  | install_date
---------+-------+--------+-----------+--------------
1 | slide | blue   | south     | 2014-04-28
2 | swing | yellow | northwest | 2010-08-16

Как видите, столбец equip_id был заполнен автоматически. Чтобы удалить значение (к примеру, slide), используйте команду:

DELETE FROM playground WHERE type = 'slide';

Просмотрите таблицу:

SELECT * FROM playground;
equip_id | type  | color | location | install_date
----------+-------+-------+----------+--------------
1 | slide | blue  | south    | 2014-04-28

Полезные команды

  • \?: выводит полный список команд psql.
  • \h: справка по командам SQL; чтобы получить справку о какой-либо конкретной команде, просто используйте её в качестве префикса.
  • \q: закрывает консоль psql и возвращает в строку Linux.
  • \d: список доступных таблиц, видов.
  • \du: список доступных ролей.
  • \dp: список привилегий доступа.
  • \dt: список таблиц.
  • \l: список баз данных.
  • \c: подключение к базе данных; после команды нужно указать имя целевой БД.
  • \password: изменение пароля для текущего пользователя.
  • \conninfo: информация о текущей БД и подключении.

Теперь система управления базами данных PostgreSQL установлена на сервер Debian и готова к использованию.

Полезные ссылки и сведения:

Tags: , ,

Добавить комментарий