Поиск по сайту:

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


Введение

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

Если приложение, которое вы используете, нуждается в стабильности, качестве пакета и простоте администрирования, Debian 8 (кодовое имя «Jessie») — один из лучших кандидатов для дистрибутива Linux. ”, но его стабильность и качество хорошо известны. Если вашему приложению или службе нужна база данных, сочетание Debian 8 и PostgreSQL — одно из лучших в городе.

В этой статье мы покажем вам, как установить PostgreSQL на новый экземпляр Debian 8 Stable и начать работу.

Предпосылки

Первое, что нужно сделать, это запустить стабильную систему Debian 8. Вы можете следовать инструкциям из статьи Initial Server Setup with Debian 8. В этом руководстве предполагается, что у вас есть готовая стабильная капля Debian 8.

Если не указано иное, все команды в этом руководстве должны выполняться от имени пользователя без полномочий root с привилегиями sudo. Чтобы узнать, как создавать пользователей и предоставлять им привилегии sudo, ознакомьтесь со статьей Начальная настройка сервера с Debian 8.

Установка PostgreSQL

Перед установкой PostgreSQL убедитесь, что у вас есть последняя информация из репозиториев Debian, обновив список пакетов apt следующим образом:

  1. sudo apt-get update

Вы должны увидеть обновляемые списки пакетов и следующее сообщение:

Reading package lists... Done.

Есть несколько пакетов, которые начинаются с postgresql:

  • postgresql-9.4: серверный пакет PostgreSQL
  • postgresql-client-9.4: клиент для PostgreSQL
  • postgresql: «метапакет», который лучше объясняется в Руководстве для новых сопровождающих Debian

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

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

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

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

Чтобы убедиться, что сервер PostgreSQL был правильно установлен и работает, вы можете использовать команду 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 успешно установлен и работает.

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

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

  1. su - postgres

Теперь вы должны быть зарегистрированы как postgres. Чтобы запустить консоль PostgreSQL, введите psql:

  1. psql

Сделанный! Вы должны войти в консоль PostgreSQL. Вы должны увидеть следующее приглашение:

psql (9.4.2)
Type "help" for help.

postgres=# 

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

Создание новых ролей

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

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

Процедура установки создала учетную запись пользователя с именем postgres, связанную с ролью Postgres по умолчанию.

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

  1. createuser --interactive

По сути, это интерактивный сценарий оболочки, который вызывает правильные команды PostgreSQL для создания пользователя в соответствии с вашими требованиями. Он задаст вам несколько вопросов: имя роли, должен ли он быть суперпользователем, должна ли роль создавать новые базы данных и сможет ли роль создавать новые роли. Страница man содержит дополнительную информацию:

  1. man createuser

Создание новой базы данных

PostgreSQL настроен по умолчанию с аутентифицирующими ролями, которые запрашиваются совпадающими системными учетными записями. (Вы можете получить больше информации об этом на postgresql.org). Это также исходит из предположения, что будет существовать соответствующая база данных для подключения роли. Поэтому, если у меня есть пользователь с именем test1, эта роль будет пытаться подключиться к базе данных с именем test1 по умолчанию.

Вы можете создать соответствующую базу данных, просто вызвав эту команду от имени пользователя postgres:

  1. createdb test1

Теперь создана новая база данных test1.

Подключение к PostgreSQL с новым пользователем

Предположим, что у вас есть учетная запись Linux с именем test1, создана роль PostgreSQL test1 для соответствия ей и создана база данных test1. Чтобы изменить учетную запись пользователя в Linux на test1:

  1. su - test1

Затем подключитесь к базе данных test1 в качестве роли test1 PostgreSQL с помощью команды:

  1. psql

Теперь вы должны увидеть приглашение PostgreSQL с вновь созданным пользователем test1 вместо postgres.

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

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

Во-первых, давайте создадим таблицу для хранения некоторых данных. Создадим таблицу, описывающую игровое оборудование.

Основной синтаксис этой команды примерно такой:

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

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

Вы можете узнать больше о том, как создавать таблицы в Postgres и управлять ими, в статье Как создавать, удалять и управлять таблицами в 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
);

Мы сделали стол для детской площадки, на котором хранится оборудование, которое у нас есть. Он начинается с идентификатора оборудования серийного типа. Этот тип данных является автоматически увеличивающимся целым числом. Мы дали этому столбцу ограничение первичного ключа, что означает, что значения должны быть уникальными, а не нулевыми.

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

Затем мы даем столбцы для типа оборудования и цвета, каждый из которых не может быть пустым. Затем мы создаем столбец местоположения и создаем ограничение, которое требует, чтобы значение было одним из восьми возможных значений. Последний столбец — это столбец даты, в котором записана дата установки оборудования.

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

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

Как видите, у нас есть наш игровой стол.

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

Теперь, когда мы создали таблицу, мы можем вставить в нее некоторые данные.

Добавим горку и качели. Мы делаем это, вызывая таблицу, в которую мы хотим добавить, называя столбцы и затем предоставляя данные для каждого столбца. Нашу горку и качели можно добавить так:

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 был успешно заполнен и что все наши другие данные были организованы правильно. Если наш слайд сломается, и мы удалим его с игровой площадки, мы также можем удалить строку из нашей таблицы, набрав:

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.

Заключение

Теперь у вас должна быть полностью функциональная база данных PostgreSQL, запущенная и работающая в вашей системе Debian. Поздравляем! Существует множество документации, чтобы пойти отсюда:

  • Руководства по PostgreSQL
  • Установка пакета postgresql-doc: sudo apt-get install postgresql-doc
  • Файл README, установленный в /usr/share/doc/postgresql-doc-9.4/tutorial/README

Для получения полного списка поддерживаемых SQL-команд в PostgreSQL перейдите по этой ссылке:

  • Команды SQL

Чтобы сравнить различные функции баз данных, вы можете проверить:

  • SQLite, MySQL и PostgreSQL

Для лучшего понимания ролей и разрешений см.:

  • Как использовать роли и управлять предоставлением разрешений в PostgreSQL на VPS