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

Как установить и использовать PostgreSQL в Ubuntu 16.04


Введение

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

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

В этом руководстве мы покажем, как установить Postgres на экземпляре VPS Ubuntu 16.04, и рассмотрим некоторые основные способы его использования.

Монтаж

Репозитории Ubuntu по умолчанию содержат пакеты Postgres, поэтому мы можем легко установить их с помощью системы упаковки apt.

Поскольку мы впервые используем apt в этом сеансе, нам нужно обновить наш локальный индекс пакетов. Затем мы можем установить пакет Postgres и пакет -contrib, который добавляет некоторые дополнительные утилиты и функции:

  1. sudo apt-get update
  2. sudo apt-get install postgresql postgresql-contrib

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

Использование ролей и баз данных PostgreSQL

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

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

Есть несколько способов использовать эту учетную запись для доступа к Postgres.

Переключение на учетную запись postgres

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

Переключитесь на учетную запись postgres на своем сервере, набрав:

  1. sudo -i -u postgres

Теперь вы можете сразу получить доступ к приглашению Postgres, набрав:

  1. psql

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

Выйдите из командной строки PostgreSQL, набрав:

  1. \q

Теперь вы должны вернуться в командную строку postgres Linux.

Доступ к приглашению Postgres без переключения учетных записей

Вы также можете запустить нужную команду с учетной записью postgres непосредственно с помощью sudo.

Например, в последнем примере мы просто хотели получить приглашение Postgres. Мы могли бы сделать это за один шаг, выполнив единственную команду psql от имени пользователя postgres с sudo следующим образом:

  1. sudo -u postgres psql

Это позволит вам напрямую войти в Postgres без промежуточной оболочки bash между ними.

Опять же, вы можете выйти из интерактивного сеанса Postgres, набрав:

  1. \q

Создать новую роль

В настоящее время у нас есть только роль postgres, настроенная в базе данных. Мы можем создавать новые роли из командной строки с помощью команды createrole. Флаг --interactive предложит вам ввести необходимые значения.

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

  1. createuser --interactive

Если вместо этого вы предпочитаете использовать sudo для каждой команды, не переключаясь с вашей обычной учетной записи, вы можете ввести:

  1. sudo -u postgres createuser --interactive

Сценарий предложит вам несколько вариантов и, основываясь на ваших ответах, выполнит правильные команды Postgres, чтобы создать пользователя в соответствии с вашими требованиями.

Output
Enter name of role to add: sammy Shall the new role be a superuser? (y/n) y

Вы можете получить больше контроля, передав некоторые дополнительные флаги. Ознакомьтесь с вариантами на странице man:

  1. man createuser

Создать новую базу данных

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

Таким образом, если в предыдущем разделе мы создали пользователя с именем sammy, эта роль попытается подключиться к базе данных, которая также называется sammy с помощью по умолчанию. Вы можете создать соответствующую базу данных с помощью команды createdb.

Если вы вошли в систему как учетная запись postgres, введите что-то вроде:

  1. createdb sammy

Если вместо этого вы предпочитаете использовать sudo для каждой команды, не переключаясь с вашей обычной учетной записи, вы должны ввести:

  1. sudo -u postgres createdb sammy

Откройте приглашение Postgres с новой ролью

Чтобы войти с аутентификацией на основе ident, вам понадобится пользователь Linux с тем же именем, что и у вашей роли и базы данных Postgres.

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

  1. sudo adduser sammy

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

  1. sudo -i -u sammy
  2. psql

Или вы можете сделать это встроенным:

  1. sudo -u sammy psql

Вы войдете в систему автоматически, предполагая, что все компоненты настроены правильно.

Если вы хотите, чтобы ваш пользователь подключался к другой базе данных, вы можете сделать это, указав базу данных следующим образом:

  1. psql -d postgres

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

  1. \conninfo
Output
You are connected to database "sammy" as user "sammy" via socket in "/var/run/postgresql" at port "5432".

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

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

Теперь, когда вы знаете, как подключиться к системе баз данных 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 и управлять ими здесь.

Для наших целей мы собираемся создать простую таблицу, подобную этой:

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
);

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

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

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

Мы можем увидеть нашу новую таблицу, набрав:

  1. \d
Output
List of relations Schema | Name | Type | Owner --------+-------------------------+----------+------- public | playground | table | sammy public | playground_equip_id_seq | sequence | sammy (2 rows)

Наша игровая таблица находится здесь, но у нас также есть нечто, называемое playground_equip_id_seq, имеющее тип sequence. Это представление типа serial, который мы присвоили нашему столбцу equip_id. Это отслеживает следующее число в последовательности и создается автоматически для столбцов этого типа.

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

  1. \dt
Output
List of relations Schema | Name | Type | Owner --------+------------+-------+------- public | playground | table | sammy (1 row)

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

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

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

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

Вы должны быть осторожны при вводе данных, чтобы избежать нескольких распространенных зависаний. Во-первых, имейте в виду, что имена столбцов не должны заключаться в кавычки, но столбцы values, которые вы вводите, нуждаются в кавычках.

Еще одна вещь, о которой следует помнить, это то, что мы не вводим значение для столбца equip_id. Это связано с тем, что это автоматически генерируется всякий раз, когда создается новая строка в таблице.

Затем мы можем получить информацию, которую мы добавили, набрав:

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

Здесь вы можете видеть, что наш equip_id был успешно заполнен и что все наши другие данные были организованы правильно.

Если слайд на игровой площадке сломался и нам нужно его удалить, мы также можем удалить строку из нашей таблицы, набрав:

  1. DELETE FROM playground WHERE type = 'slide';

Если мы снова запросим нашу таблицу, мы увидим, что наш слайд больше не является частью таблицы:

  1. SELECT * FROM playground;
Output
equip_id | type | color | location | install_date ----------+-------+--------+-----------+-------------- 2 | swing | yellow | northwest | 2010-08-16 (1 row)

Как добавлять и удалять столбцы из таблицы

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

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

  1. ALTER TABLE playground ADD last_maint date;

Если вы снова просмотрите информацию о своей таблице, вы увидите, что новый столбец был добавлен (но данные не были введены):

  1. SELECT * FROM playground;
Output
equip_id | type | color | location | install_date | last_maint ----------+-------+--------+-----------+--------------+------------ 2 | swing | yellow | northwest | 2010-08-16 | (1 row)

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

  1. ALTER TABLE playground DROP last_maint;

Как обновить данные в таблице

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

Вы можете обновить значения существующей записи, запросив нужную запись и установив для столбца значение, которое хотите использовать. Мы можем запросить запись \swing (это будет соответствовать каждому колебанию в нашей таблице) и изменить ее цвет на красный. Это может быть полезно, если мы покрасим качели:

  1. UPDATE playground SET color = 'red' WHERE type = 'swing';

Мы можем убедиться, что операция прошла успешно, снова запросив наши данные:

  1. SELECT * FROM playground;
Output
equip_id | type | color | location | install_date ----------+-------+-------+-----------+-------------- 2 | swing | red | northwest | 2010-08-16 (1 row)

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

Заключение

Теперь вы настроили PostgreSQL на своем сервере Ubuntu 16.04. Однако с Postgres предстоит еще еще много узнать. Вот еще несколько руководств по использованию Postgres:

  • Сравнение систем управления реляционными базами данных
  • Узнайте, как создавать таблицы и управлять ими с помощью Postgres
  • Научитесь лучше управлять ролями и разрешениями
  • Создавайте запросы в Postgres с помощью Select
  • Узнайте, как защитить PostgreSQL
  • Узнайте, как сделать резервную копию базы данных Postgres