Вступление
Реляционные базы данных являются краеугольным камнем организации данных для множества потребностей. Они приводят в движение все: от покупок в Интернете до запуска ракет. PostgreSQL - это почтенная, но все еще играющая база данных. PostgreSQL следует большей части стандарта SQL, имеет транзакции ACID, поддерживает внешние ключи и представления и все еще находится в активной разработке.
Если приложение, которое вы запускаете, нуждается в стабильности, качестве пакета и простом администрировании, Debian 8 (кодовое имя «Jessie») является одним из лучших кандидатов на распространение Linux. Он движется немного медленнее, чем другие «дистрибутивы», но его стабильность и качество хорошо известны. Если вашему приложению или службе требуется база данных, комбинация Debian 8 и PostgreSQL является одной из лучших в городе.
В этой статье мы покажем вам, как установить PostgreSQL на новый стабильный экземпляр Debian 8 и приступить к работе.
Предпосылки
Первым делом нужно запустить стабильную систему Debian 8. Вы можете следовать инструкциям, изложенным в статье Initial Настройка сервера с Debian 8. В этом руководстве предполагается, что у вас есть готовая стабильная капля Debian 8.
Если не указано иное, все команды в этом руководстве должны выполняться от имени пользователя без полномочий root с привилегиями sudo. Чтобы узнать, как создавать пользователей и предоставлять им привилегии sudo, ознакомьтесь с Initial Server Setup с Debian 8.
Установка PostgreSQL
Перед установкой PostgreSQL убедитесь, что вы располагаете самой последней информацией из репозиториев Debian, обновив список пакетов apt следующим образом:
sudo apt-get update
Вы должны увидеть обновляемые списки пакетов и следующее сообщение:
Reading package lists... Done.
Есть несколько пакетов, которые начинаются с + postgresql
:
-
+ postgresql-9.4 +
: серверный пакет PostgreSQL -
+ postgresql-client-9.4 +
: клиент для PostgreSQL -
+ postgresql +
: «метапакет» лучше объясняется в Debian Handbook или в http: //www.debian. org / doc / manual / maint-guide / [Руководство нового сопровождающего Debian]
Для непосредственной установки пакета + postgresql-9.4 +
:
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):
su - postgres
Теперь вы должны быть зарегистрированы как + postgres +
. Чтобы запустить консоль PostgreSQL, введите + psql +
:
psql
Готово! Вы должны войти в консоль PostgreSQL. Вы должны увидеть следующее приглашение:
psql (9.4.2)
Type "help" for help.
postgres=#
Чтобы выйти из консоли psql, просто используйте команду + \ q +
.
Создание новых ролей
По умолчанию Postgres использует концепцию, называемую «роли», для помощи в аутентификации и авторизации. В некотором смысле они похожи на обычные учетные записи в стиле Unix, но PostgreSQL не различает пользователей и группы и вместо этого предпочитает более гибкий термин «роль».
После установки PostgreSQL настроен на использование «аутентификации» аутентификации, что означает, что он связывает роли PostgreSQL с соответствующей системной учетной записью Unix / Linux. Если роль PostgreSQL существует, ее можно войти, войдя в соответствующую системную учетную запись Linux.
Процедура установки создала учетную запись пользователя с именем postgres, которая связана с ролью Postgres по умолчанию.
Для создания дополнительных ролей мы можем использовать команду + createuser +
. Имейте в виду, что эту команду следует вводить как пользователь + postgres +
, а не внутри консоли PostgreSQL:
createuser --interactive
По сути, это интерактивный сценарий оболочки, который вызывает правильные команды PostgreSQL для создания пользователя в соответствии с вашими требованиями. Он задаст вам несколько вопросов: название роли, должна ли она быть суперпользователем, должна ли роль создавать новые базы данных и сможет ли роль создавать новые роли. Страница + man +
содержит больше информации:
man createuser
Создание новой базы данных
PostgreSQL настроен по умолчанию с ролями аутентификации, которые запрашиваются соответствующими системными учетными записями. (Вы можете получить более подробную информацию об этом на postgresql.org). Кроме того, предполагается, что для роли, к которой будет подключаться, будет существовать соответствующая база данных. Поэтому, если у меня есть пользователь с именем + test1 +
, эта роль будет пытаться подключиться к базе данных с именем + test1 +
по умолчанию.
Вы можете создать соответствующую базу данных, просто вызвав эту команду как пользователь + postgres +
:
createdb test1
Новая база данных + test1 +
теперь создана.
Подключение к PostgreSQL с новым пользователем
Предположим, что у вас есть учетная запись Linux с именем + test1 +
, вы создали для нее соответствующую роль PostgreSQL + test1 +
и создали базу данных + test1 +
. Чтобы изменить учетную запись пользователя в Linux на + test1 +
:
su - test1
Затем подключитесь к базе данных + test1 +
как роль + test1 +
PostgreSQL с помощью команды:
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, в https://www.digitalocean.com/community/tutorials/how-to-create-remove-manage-tables-in-postgresql-on-a-cloud -server [Как создавать, удалять и управлять таблицами в 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-doc +
:+ sudo apt-get install postgresql-doc +
-
Файл
+ README +
установлен в+ / usr / share / doc / postgresql-doc-9.4 / tutorial / README +
Для получения полного списка поддерживаемых команд SQL в PostgreSQL перейдите по этой ссылке:
Для сравнения различных функций баз данных вы можете проверить:
Для лучшего понимания ролей и разрешений смотрите: