Установка PostgreSQL в Ubuntu
Реляционные системы управления базами данных — это ключевой компонент многих веб-сайтов и приложений. Они обеспечивают структурированный способ хранения данных и организацию доступа к информации. PostgreSQL- это объектно-реляционная система управления базами данных, которая все больше и больше вытесняет MySQL и производственных серверов.
Её преимущество в множестве дополнительных функций и улучшений, таких как надежная передача данных и параллелизация без блокировок чтения. Вы можете использовать эту СУБД из различных языков программирования, а её синтаксис запросов PL/pgSQL очень похож на MySQL от Oracle. В этой статье мы рассмотрим как выполняется установка PostgreSQL в Ubuntu 20.04, а также как выполнить первоначальную настройку и подготовку к работе этой системы.
Установка Postgresql в Ubuntu 20.04
Это очень популярный сервер баз данных, потому программа есть в официальных репозиториях. Для установки оттуда выполните:
sudo apt install postgresql
А если вы хотите получить самую новую версию, то придется добавить в систему 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 install postgresql postgresql-contrib
Когда установка будет завершена, можно переходить к настройке.
Настройка Postgresql в Ubuntu
Вы знаете как установить Postgresql Ubuntu, но этого недостаточно для начала полноценной работы. Первым делом, откройте терминал и переключите его на пользователя postgres с помощью команды:
Эта учетная запись создается во время установки программы и на данный момент вы можете получить доступ к системе баз данных только с помощью нее. По умолчанию postgress использует концепцию ролей для аутентификации и авторизации.
Это очень похоже на учетные записи Unix, но программа не различает пользователей и групп, есть только роли. Сразу после установки Postgresql пытается связать свои роли с системными учетными записями, если для имени системной учетной записи существует роль, то пользователь может войти в консоль управления и выполнять позволенные ему действия. Таким образом, после переключения на пользователя postgres вы можете войти в консоль управления:
И посмотреть информацию о соединении:
Чтобы выйти наберите:
Теперь давайте рассмотрим как создать другие роли и базы данных.
Создание роли Postgresql
Вы уже можете полноценно работать с базой данных с помощью учетной записи postgres, но давайте создадим дополнительную роль. Учетная запись postgres является администратором, поэтому имеет доступ к функциям управления. Для создания пользователя выполните:
Скрипт задаст лишь два вопроса, имя новой роли и нужно ли делать ее суперпользователем.
Создание базы данных
Точно также как имена ролей сопоставляются с системными пользователями, имя базы данных будет подбираться по имени пользователя. Например, если мы создали пользователя segiy, то по умолчанию система попытается получить доступ к базе данных segiy. Мы можем ее очень просто создать:
Дальше, чтобы подключиться к этой базе данных нам нужно войти от имени одноименного пользователя:
Заходим в консоль и смотрим информацию о подключении:
Все верно сработало. Мы подключились с помощью роли segiy к базе segiy. Если нужно указать другую базу данных, вы можете сделать это с помощью опции -d, например:
Все сработало верно, при условии, что все компоненты были настроены как описано выше.
Создание таблиц
Теперь, когда вы знаете как подключится к базе данных 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). Следующий столбец тоже строка, но она может содержать только одно из указанных значений, последний столбец — дата создания.
Вы можете вывести все таблицы, выполнив команду:
Здесь мы видим что кроме нашей таблицы, существует еще одна переменная — playground_equip_id_seq. В ней содержится последнее значение этого поля. Если нужно вывести только таблицы, выполните:
Вставка и удаление данных
У нас есть таблица, но пока что она пуста. Мы можем добавить в нее некоторые данные. Давайте добавим пункт, описывающий качели. Для этого используются такие команды:
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 и закоментируйте строку:
А вместо нее добавьте:
Это необходимо, чтобы открыть доступ к этому адресу не только с локального компьютера, но и их других устройств сети. Заметьте, что вы не сможете войти под учетной записью postgres, это сделано из соображений безопасности. Когда завершите, перезагрузите Apahce:
sudo systemctl restart apache2
Выводы
Теперь установка Postgresql Ubuntu 16.04 завершена и вы даже прошли краткий экскурс в синтаксис PgSQL, который очень похож на привычный нам MySQL, но имеет некоторые отличия. Если у вас остались вопросы, спрашивайте в комментариях!
Установка и настройка сервера PostgreSQL под Linux Ubuntu
Тестировалось и работает на Ubuntu Linux (10.04 — 16.04 x86, x86_64) и PostgreSQL 8.4 — 9.4, но оно также должно быть применимо для более старых версий (Ubuntu и PostgreSQL) и других Debian-based дистрибутивов.
Для базовой установки в командной строке введите следующие команды (или найдите перечисленные пакеты в синаптике, если вы предпочитаете работать с ним):
Оговорюсь сразу, что статья написана под 8.4. У кого более поздние версии, вам придется немного подправить пути.
| sudo apt-get install postgresql postgresql-client postgresql-contrib |
Если Вы устанавливаете на локальный компьютер или на сервер, где установлены иксы, то для администрирования можно установить Pgadmin:
| sudo apt-get install pgadmin3 |
Эти команды установят сервер и клиент БД, некоторые дополнительные скрипты и графическую утилиту pgAdmin для работы с БД.
Теперь нам необходимо переустановить пароль админского аккаунта ‘postgres’ сервера, чтобы мы могли использовать его для задач системного администрирования. Введите в командной строке (подставьте вместо password пароль, который вы хотите использовать):
sudo su postgres -c psql postgres
postgres=# ALTER USER postgres WITH PASSWORD ‘сюда_записываем_нужный_вам_пароль’;
postgres=# \q
Эти команды изменяют пароль внутри БД, теперь нам необходимо сделать тоже самое с unix пользователем ‘postgres’, замечу что пароли должны быть одинаковы:
| sudo passwd -d postgres |
Снимаем сроки паролей и меняем пароль, как я и говорил на идентичный, что писали в базу:
| sudo su postgres -c passwd |
Введите тот же пароль, который вы использовали в прошлый раз.
Теперь мы можем использовать и программу pgAdmin, и консольный клиент (от пользователя postgres), чтобы работать с сервером БД. Но, перед запуском pgAdmin, мы должны установить админский пакет PostgreSQL, который включит лучшее логгирование и мониторинг в pgAdmin. Запустите следующую команду:
| sudo postgres -c psql /usr/share/postgresql/8.4/contrib/adminpack.sql * |
Наконец, нам необходимо настроить сервер для работы в сети, иначе он будет доступен только с локальной машины. Чтобы сделать это, сначала необходимо отредактировать в консоли postgresql.conf:
| sudo nano /etc/postgresql/8.4/main/postgresql.conf |
| listen_addresses = ‘localhost’ |
И снимаем комментарий с
Сохраните файл нажав Ctrl +X .
Последний шаг — мы должны определить, кто должен иметь доступ к серверу. Это настраивается с помощью файла pg_hba.conf file. (Этот шаг можно также сделать с помощью последних версий pgAdmin (1.6.x), плюс вам даже нет необходимости вычислять IP адреса и маски подсетей. Но это не исключает необходимости знать, как это работает.)
| sudo nano /etc/postgresql/8.4/main/pg_hba.conf |
Пример рабочего конфига:
| # PostgreSQL Client Authentication Configuration File # =================================================== local all postgres ident sameuser # TYPE DATABASE USER CIDR-ADDRESS METHOD # «local» is for Unix domain socket connections only Всё, теперь перезапустите сервер:
Установка словарей PostgreSQL для русского полнотекстового поиска.Словари можно скачать отсюда http://wiki.services.openoffice.org/wiki/Dictionaries#Russian_.28Russia.29
Эта команда преобразовывает кодировку словарей, переименовывает их и копирует в нужную папку. Пути зависят от установки. Найдите у себя папку tsearch_data , которая содержит словари, ее и пропишите. Теперь создаем полнотекстовую конфигурацию для работы с русским (ну и английским) Посылаете запросы к postgresql
|














