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

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


Введение

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

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

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

Монтаж

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

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

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

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

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

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

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

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

sudo -i -u postgres

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

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

psql

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

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

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

\q

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

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

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

Мы можем создать новую роль, набрав:

createuser --interactive

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

man createuser

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

То, как Postgres настроено по умолчанию (аутентификация ролей, которые запрашиваются совпадающими системными учетными записями), также исходит из предположения, что будет существовать соответствующая база данных для подключения роли.

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

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

<пред>

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

Предположим, что у вас есть системная учетная запись Linux с именем test1 (вы можете создать ее, набрав: adduser test1), и что вы создали роль Postgres и базу данных, также называемую <тест1.

Вы можете перейти на системную учетную запись Linux, набрав:

<пред>

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

psql

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

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

<пред>

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

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

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

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

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

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

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

<пред>

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

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

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

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

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

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

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

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

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

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

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

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

<пред>

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

Еще одна вещь, о которой следует помнить, это то, что мы не вводим значение для столбца 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
(2 rows)

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

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

DELETE FROM playground WHERE type = 'slide';

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

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

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

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

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

<пред>

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

SELECT * FROM playground;
 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 (это будет соответствовать каждому колебанию в нашей таблице) и изменить ее цвет на красный. Это могло бы быть полезно, если бы мы покрасили его:

<пред>

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

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

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

Заключение

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

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

Джастин Эллингвуд