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

Вступление

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

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

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

Монтаж

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

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

sudo apt-get update
sudo apt-get install postgresql postgresql-contrib

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

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

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

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

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

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

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

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

sudo -i -u postgres

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

psql

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

Выйдите из приглашения PostgreSQL, набрав:

\q

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

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

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

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

sudo -u postgres psql

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

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

\q

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

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

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

createuser --interactive

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

sudo -u postgres createuser --interactive

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

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

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

man createuser

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

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

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

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

createdb

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

sudo -u postgres createdb

Откройте подсказку Postgres с новой ролью

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

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

sudo adduser

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

sudo -i -u
psql

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

sudo -u  psql

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

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

psql -d

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

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

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

Создать и удалить таблицы

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

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

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

CREATE TABLE  (
    () ,
    (),
    ()
);

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

Вы можете узнать больше о how для создания и управления таблицами в 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 +. Этот тип данных является автоинкрементным целым числом. Мы дали этому столбцу ограничение + первичный ключ +, что означает, что значения должны быть уникальными, а не нулевыми.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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 + был успешно заполнен и что все остальные наши данные были организованы правильно.

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

DELETE FROM playground WHERE type = 'slide';

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

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

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

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

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

ALTER TABLE playground ADD last_maint date;

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

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

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

ALTER TABLE playground DROP last_maint;

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

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

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

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

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

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:

Related