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

Postgresql — это объектно-реляционная система управления базами данных, которая все больше и больше вытесняет MySQL и производственных серверов. Ее преимущество в множестве дополнительных функций и улучшений, таких как надежная передача данных и параллелизация без блокировок чтения. Вы можете использовать эту СУБД из различных языков программирования, а ее синтаксис запросов PL/pgSQL очень похож на MySQL от Oracle.

В этой статье мы рассмотрим как выполняется установка Postgresql Ubuntu 16.04, а также как выполнить первоначальную настройку и подготовку к работе этой системы.

Установка Postgresql в Ubuntu 16.04

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

sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt/ `lsb_release -cs`-pgdg main" >> /etc/apt/sources.list.d/pgdg.list'
$ wget -q https://www.postgresql.org/media/keys/ACCC4CF8.asc -O - | sudo apt-key add -

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

sudo apt-get update

Установка Postgresl Ubuntu из PPA или официальных репозиториев выглядит одинаково:

sudo apt-get install postgresql postgresql-contrib

Когда установка будет завершена, можно переходить к настройке.

Настройка Postgresql в Ubuntu

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

sudo su - postgres

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

Это очень похоже на учетные записи Unix, но программа не различает пользователей и групп, есть только роли. Сразу после установки Postgresql пытается связать свои роли с системными учетными записями, если для имени системной учетной записи существует роль, то пользователь может войти в консоль управления и выполнять позволенные ему действия. Таким образом, после переключения на пользователя postgres вы можете войти в консоль управления:

psql

И посмотреть информацию о соединении:

conninfo

Чтобы выйти наберите:

q

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

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

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

createuser --interactive

Скрипт задаст лишь два вопроса, имя новой роли и нужно ли делать ее суперпользователем.

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

Точно также как имена ролей сопоставляются с системными пользователями, имя базы данных будет подбираться по имени пользователя. Например, если мы создали пользователя segiy, то по умолчанию система попытается получить доступ к базе данных segiy. Мы можем ее очень просто создать:

createdb sergiy

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

sudo su - sergiy

Заходим в консоль и смотрим информацию о подключении:

psql

Все верно сработало. Мы подключились с помощью роли segiy к базе segiy. Если нужно указать другую базу данных, вы можете сделать это с помощью опции -d, например:

psql -d postgres

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

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

Теперь, когда вы знаете как подключится к базе данных Postgresql давайте рассмотрим как выполняются основные задачи. Сначала разберем создание таблиц для хранения некоторых данных. Для создания таблицы Postgresql используется такой синтаксис:

CREATE TABLE имя таблицы (
имя_колонки1 тип_колонки ( длина ) ограничения ,
имя_колонки2 тип_колонки ( длина ),
имя_колонки3 тип_колонки ( длина )
);

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

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

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

Следующие колонки — обычные строки, для них мы задаем длину поля, они не могут быть пустыми (NOT NULL). Следующий столбец тоже строка, но она может содержать только одно из указанных значений, последний столбец — дата создания.

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

d

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

dt

Вставка и удаление данных

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

INSERT INTO playground (type, color, location, install_date) VALUES ('slide', 'blue', 'south', '2016-04-28');

INSERT INTO playground (type, color, location, install_date) VALUES ('swing', 'yellow', 'northwest', '2015-08-16');

Заметьте, что имена столбцов не обязательно заключать в кавычки, а вот имена значений — обязательно. Теперь смотрим что получилось:

SELECT * FROM playground;

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

DELETE FROM playground WHERE type = 'slide';

И снова смотрим что получилось:

SELECT * FROM playground;

Установка phppgadmin

Не всегда удобно управлять базой данных из терминала. Иногда нужно получить доступ ко всему через веб-интерфейс. Для этого есть программа phppgadmin, но для ее работы нужен веб-сервер Apache. Для установки программы наберите:

sudo apt install phppgadmin

Когда установка будет завершена откройте файл /etc/apache2/conf-available/phppgadmin.conf и закоментируйте строку:

Require local

А вместо нее добавьте:

Allow From all

Это необходимо, чтобы открыть доступ к этому адресу не только с локального компьютера, но и их других устройств сети. Заметьте, что вы не сможете войти под учетной записью postgres, это сделано из соображений безопасности. Когда завершите, перезагрузите Apahce:

sudo service apache2 restart

Выводы

Теперь установка Postgresql Ubuntu 16.04 завершена и вы даже прошли краткий экскурс в синтаксис PgSQL, который очень похож на привычный нам MySQL, но имеет некоторые отличия. Если у вас остались вопросы, спрашивайте в комментариях!

Источник: losst.ru