Pgadmin centos 7 установка настройка
Реляционные базы данных являются одним из основных компонентов большинства сайтов и приложений. Они необходимы для структурирования и хранения данных.
PostgreSQL – это реляционная система управления базами данных (СУБД), основанная на языке запросов SQL. Она подходит для поддержки приложений любого масштаба и имеет множество дополнительных функций (надёжные транзакции, параллелизм без блокировки прав на чтение и многое другое).
Данный мануал поможет установить PostgreSQL на виртуальный выделенный сервер CentOS 7 и научит работать с этой СУБД.
Требования
- Для работы вам нужен сервер CentOS 7, настроенный по этому мануалу.
- Настроенный брандмауэр. Инструкции вы найдете в мануале Дополнительные рекомендации по настройке сервера CentOS 7.
- Базы данных могут быть особенно уязвимы к изменениям системного времени, если они очень активны и поддерживают временные метки во внутренних записях. Чтобы предотвратить конфликты, которые могут возникнуть из-за несинхронизированных часов, обязательно настройте поддержку сетевого протокола времени (NTP), следуя специальному разделу в мануале Дополнительные рекомендации по настройке сервера CentOS 7.
1: Установка PostgreSQL
Пакет PostgreSQL можно загрузить из официального репозитория CentOS с помощью стандартного менеджера пакетов. Однако эта версия может быть устаревшей. Потому мы рекомендуем установить пакет из официального репозитория Postgres.
Прежде чем перейти к настройке нового репозитория, исключите поиск пакетов postgresql из репозитория CentOS-Base. В противном случае зависимости могут разрешиться на другую версию пакета.
Откройте конфигурационный файл репозитория с помощью текстового редактора, например, vim:
sudo vi /etc/yum.repos.d/CentOS-Base.repo
Найдите разделы [base] и [updates], перейдите в режим вставки, нажав i, и вставьте строку exclude=postgresql* в оба раздела. В результате файл будет выглядеть следующим образом:
Когда вы закончите, нажмите ESC, чтобы выйти из режима вставки, затем :wq и Enter, чтобы сохранить и закрыть файл.
Теперь установите пакет конфигурации репозитория, используйте для этого официальный репозиторий PostgreSQL для CentOS:
Подтвердите установку, нажав у.
Репозиторий PostgreSQL содержит информацию обо всех доступных релизах PostgreSQL. Вы можете увидеть все доступные пакеты и версии, введя следующую команду:
yum list postgresql*
Выберите и установите нужную версию PostgreSQL. В этом мануале мы используем релиз PostgreSQL 11.
Чтобы установить сервер PostgreSQL, используйте следующую команду:
sudo yum install postgresql11-server
В процессе установки вам будет предложено импортировать ключ GPG:
.
Importing GPG key 0x442DF0F8:
Userid : "PostgreSQL RPM Building Project <[email protected]>"
Fingerprint: 68c9 e2b9 1a37 d136 fe74 d176 1f16 d2e1 442d f0f8
Package : pgdg-redhat-repo-42.0-5.noarch (installed)
From : /etc/pki/rpm-gpg/RPM-GPG-KEY-PGDG
Is this ok [y/N]:
Чтобы продолжить установку, введите у.
Установка PostgreSQL завершена. Теперь можно ознакомиться с её функциями и создать новый кластер.
2: Создание кластера PostgreSQL
Нам нужно создать новый кластер базы данных PostgreSQL, прежде чем начать использовать Postgres. Кластер баз данных – это набор баз, которые управляются одним экземпляром сервера. Чтобы создать кластер, нужно создать ряд каталогов, в которые будут помещены данные БД, создать таблицы и базы данных template1 и postgres.
База данных template1 необходима для создания новой БД. Все, что хранится в ней, будет помещено в новую базу данных при ее создании. postgres – это база данных по умолчанию, предназначенная для работы с пользователями, утилитами и сторонними приложениями.
Создайте новый кластер PostgreSQL с помощью initdb:
sudo /usr/pgsql-11/bin/postgresql-11-setup initdb
Вы увидите следующий вывод:
Initializing database . OK
Теперь запустите и включите сервис PostgreSQL с помощью systemctl:
sudo systemctl start postgresql-11
sudo systemctl enable postgresql-11
Вы увидите такой вывод:
Created symlink from /etc/systemd/system/multi-user.target.wants/postgresql-11.service to /usr/lib/systemd/system/postgresql-11.service.
PostgreSQL запущен и работает. Теперь давайте посмотрим, как работает Postgres и чем эта СУБД отличается от аналогичных систем, которые вы, возможно, использовали ранее.
3: Роли и базы данных PostgreSQL
По умолчанию PostgreSQL использует так называемые роли. Они чем-то похожи на учётные записи пользователей или группы Unix-подобных систем. Только PostgreSQL не различает пользователей и группы, она объединяет их под понятием «роли».
Во время установки PostgreSQL использует модель аутентификации ident, которая связывает роли PostgreSQL со стандартными пользователями Unix/Linux. Открыть существующую роль можно при помощи связанной с ней учётной записи Linux.
Во время установки был создан Linux-пользователь postgres, который связан со стандартной ролью системы. Можно использовать этот аккаунт, чтобы подключиться к Postgres.
Существует несколько способов получить доступ к PostgreSQL при помощи этого аккаунта.
Чтобы перейти в сессию пользователя postgres, введите:
sudo -i -u postgres
Чтобы получить доступ к командной строке, введите:
Команда выполнит вход и откроет доступ к управлению СУБД.
Чтобы закрыть командную строку PostgreSQL, наберите:
Это вернёт командную строку Linux. Чтобы вернуться в сессию обычного пользователя sudo, введите:
Прямой доступ к командной строке PostgreSQL
Можно также получить доступ к командной строке PostgreSQL, не изменяя при этом сессии пользователя. Для этого нужен доступ к команде sudo.
В последнем примере вам было предложено перейти к командной строке Postgres, сначала переключившись на пользователя postgres, а затем запустив psql. Чтобы получить доступ к командной строке Postgres за один шаг, запустите команду psql как пользователь postgres с правами sudo:
sudo -u postgres psql
Эта команда выполнит автоматический вход в PostgreSQL без промежуточной оболочки bash.
Чтобы закрыть эту командную строку, введите:
4: Создание роли
В сессии пользователя postgres создать нового пользователя можно с помощью команды:
В сессии другого пользователя можно использовать команду sudo, чтобы не переходить в сессию postgres:
sudo -u postgres createuser --interactive
Скрипт запросит данные о пользователе. Затем в зависимости от полученных данных он выполнит все необходимые команды, чтобы создать отвечающего требованиям пользователя.
Enter name of role to add: 8host
Shall the new role be a superuser? (y/n) y
У этого скрипта есть много различных флагов. Ознакомиться со списком доступных опций можно на странице мануала:
5: Создание базы данных
По умолчанию роль Postgres запрашивает одноименную базу данных. Потому следует создать такую БД для нового пользователя.
Только что вы создали нового пользователя (в руководстве он условно называется 8host). Для создания БД используется команда createdb.
В сессии пользователя postgres создать новую БД можно с помощью команды:
В сессии другого пользователя можно использовать команду sudo, чтобы не переходить в сессию postgres:
sudo -u postgres createdb 8host
6: Аутентификация новой роли PostgreSQL
Чтобы выполнить ident аутентификацию PostgreSQL, нужно иметь пользователя системы Linux, чье имя совпадает с именем роли и БД.
Если у вас нет такого пользователя, создайте его в Linux с помощью команды adduser (для этого необходимы права sudo).
sudo adduser 8host
После этого можно перейти в сессию нового пользователя и подключиться к БД:
sudo -i -u 8host
psql
Или же подключиться к БД напрямую:
sudo -u 8host psql
Если все предыдущие настройки были выполнены правильно, команда автоматически подключится к БД.
Чтобы подключиться к другой БД, нужно указать её имя:
psql -d postgres
Чтобы получить информацию о текущем подключении, введите:
\conninfo
You are connected to database "8host" as user "8host" via socket in "/var/run/postgresql" at port "5432".
Это может быть полезно при подключении к нестандартным базам данных или пользователям.
7: Создание и удаление таблиц
Вы уже знаете, как подключиться к системе баз данных PostgreSQL. Теперь вы можете изучить некоторые основные задачи по управлению Postgres.
Попробуйте создать таблицу для хранения данных; для примера таблица может описывать оборудование детской площадки. Синтаксис этой команды выглядит так:
CREATE TABLE table_name (
column_name1 col_type (field_length) column_constraints,
column_name2 col_type (field_length),
column_name3 col_type (field_length)
);
Как видите, для таблицы нужно выбрать имя, определить столбцы, тип столбцов и максимальную длину поля. Опционально можно также установить ограничения для каждого столбца.
Для примера создайте тестовую таблицу:
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
);
Данная таблица описывает всё оборудование. Таблица начинается со столбца ID, который указывает порядковый номер записи. Этот столбец был ограничен по PRIMARY KEY, что значит, что значения должны быть уникальными и не должны быть нулём.
Длина поля столбцов equip_id и install_date не ограничена; дело в том, что задавать длину некоторых столбцов необязательно, так как она автоматически задаётся типом данных.
Столбцы type и color не могут быть пустыми. Столбец location ограничен восемью возможными значениями. Столбец date указывает дату установки оборудования.
Просмотреть таблицу можно при помощи команды:
\d
List of relations
Schema | Name | Type | Owner
-------+-------------------------+----------+-------
public | playground | table | 8host
public | playground_equip_id_seq | sequence | 8host
(2 rows)
playground_equip_id_seq имеет тип данных sequence. Это представление типа данных serial, установленного для столбца equip_id. Этот тип определяет следующий номер в последовательности.
Чтобы просмотреть таблицу вне этого типа данных, введите:
\dt
List of relations
Schema | Name | Type | Owner
--------+------------+-------+-------
public | playground | table | 8host
(1 row)
8: Добавление, запрос и удаление данных
Теперь попробуйте добавить в таблицу данные.
Для этого нужно вызвать целевую таблицу, назвать столбцы и ввести данные, которые нужно добавить. К примеру, чтобы добавить горку (slide) и качели (swing), нужно ввести:
Добавляя данные в таблицу, помните:
- Имя таблицы не нужно брать в кавычки.
- Значения столбцов необходимо взять в кавычки.
- В столбец equip_id не нужно добавлять данные; его значения генерируются автоматически.
Просмотрите добавленные данные:
Как видите, столбец equip_id был заполнен автоматически. Чтобы удалить значение (к примеру, slide), используйте команду:
DELETE FROM playground WHERE type = 'slide';
9: Добавление и удаление столбцов
PostgreSQL позволяет изменять количество столбцов таблицы после её создания.
Чтобы добавить столбец, используйте команду:
ALTER TABLE playground ADD last_maint date;
Просмотрите таблицу, и вы увидите новый столбец (пока что он пуст):
Чтобы удалить столбец, введите:
ALTER TABLE playground DROP last_maint;
Это удаляет столбец last_maint и все найденные в нем значения, но оставляет все другие данные без изменений.
10: Обновление данных в таблице
Записи в таблице можно редактировать.
Чтобы обновить значение существующей записи, нужно запросить эту запись и указать столбец, значение которого нужно изменить. Для примера попробуйте обновить значение записи swing; замените yellow в столбце color новым значением (например, red).
UPDATE playground SET color = 'red' WHERE type = 'swing';
Просмотрите таблицу, чтобы убедиться, что данные были обновлены:
Как видите, значение было успешно обновлено.
Заключение
Теперь система управления базами данных PostgreSQL установлена на сервер CentOS 7 и готова к использованию.
PgAdmin4 - это простой в использовании веб-интерфейс для управления базами данных PostgreSQL. Его можно использовать на нескольких платформах, таких как Linux, Windows и Mac OS X. В pgAdmin 4 есть переход от начальной загрузки 3 к начальной загрузке 4.
В этом руководстве мы собираемся установить pgAdmin 4 в системе CentOS 7.
Примечание. В этом руководстве предполагается, что на вашем CentOS 7 уже установлен PostgreSQL 9.2 или более поздней версии. Для получения инструкций по его установке вы можете следовать нашему руководству: Как установить PostgreSQL 10 на CentOS и Fedora.
Как установить pgAdmin 4 в CentOS 7
Этот шаг должен был быть выполнен после установки PostgreSQL, но если вы этого не сделали, вы можете выполнить его с помощью:
Теперь вы готовы установить pgAdmin с помощью:
Как настроить pgAdmin 4 в CentOS 7
Чтобы запустить pgAdmin4, необходимо внести несколько незначительных изменений в конфигурацию. Сначала мы переименуем образец файла conf из pgadmin4.conf.sample в pgadmin4.conf:
Отрегулируйте файл так, чтобы он выглядел так:
Далее мы создадим каталоги журналов и библиотек для pgAdmin4 и установим их владельца:
А затем мы можем расширить содержимое нашего config_distro.py.
И добавьте следующие строки:
Наконец, мы создадим нашу учетную запись пользователя, с которой мы будем аутентифицироваться в веб-интерфейсе. Для этого запустите:
Если вы получаете ошибку 403 при доступе к интерфейсу PgAdmin4, вам необходимо установить правильный контекст SELinux для следующих файлов.
Для аутентификации используйте адрес электронной почты и пароль, которые вы использовали ранее. После аутентификации вы должны увидеть интерфейс pgAdmin4:
При первом входе в систему вам нужно будет добавить новый сервер для управления. Щелкните «Добавить новый сервер». Вам нужно будет настроить соединение PostgresQL. На первой вкладке «Общие» введите следующие настройки:
- Имя - укажите имя настраиваемого сервера.
- Комментарий - оставьте комментарий, чтобы дать описание экземпляра.
Вторая вкладка «Подключение» более важна, так как вам нужно будет ввести:
- Хост - хост/IP-адрес экземпляра PostgreSQL.
- Порт - порт по умолчанию - 5432.
- База данных обслуживания - это должен быть postgres.
- Имя пользователя - имя пользователя, которое будет подключаться. Вы можете использовать пользователя postgres.
- Пароль - пароль для указанного выше пользователя.
Когда вы все заполнили, сохраните изменения. Если соединение было успешным, вы должны увидеть следующую страницу:
Это было оно. Установка pgAdmin4 завершена, и вы можете приступить к управлению своей базой данных PostgreSQL.
В данной статье мы проведем установку СУБД PostgreSQL 11 в Linux CentOS 7, выполним базовую настройку сервера и СУБД, рассмотрим основные параметры конфигурационного файла, а так же способы тюнинга производительности. PostgreSQL – популярная свободная объектно-реляционная система управления базами данных. Не смотря на то, что она не так распространена как MySQL/MariDB, она является самой профессиональной.
Сильные стороны PostgreSQL:
- Полное соответствие стандартам SQL;
- Высокая производительность за счет управления многовариантным параллелизмом (MVCC);
- Масштабируемость (широко используется в высоконагруженных средах);
- Поддержка множества языков программирования;
- Надёжные механизмы транзакций и репликации;
- Поддержка данных в формате JSON.
Установка PostgreSQL в CentOS/RHEL
Хотя PostgreSQL можно установить из базового репозитория CentOS, мы выполним установку репозитория от разработчиков, так как в нем всегда присутствует актуальная версия пакета.
Первым шагом устанавливаем репозиторий PosgreSQL (на данный момент он устанавливается следующим образом):
В данном репозитории есть как самые новые версии PostgreSQL, так и более старые версии. Информация о репозитории выглядит следующим образом:
Установим последнюю доступную версию версию (PostrgeSQL 11) c помощью yum.
yum install postgresql11-server -y
В процессе установки устаналивается сам сервере PostgreSQL и необходимые библотеки:
После установки пакетов, нужно произвести инициализацию базы данных:
Так же сразу добавим сервер БД в автозагрузку и запустим его:
systemctl enable postgresql-11
systemctl start postgresql-11
Чтобы убедиться, что сервер запустился и никаких проблем нет, проверим его статус:
Если вам нужен доступ к PostgreSQL снаружи, вам нужно открыть порт TCP/5432, в стандартном firewall в Centos 7:
Если включен SELinux, выполните:
Подключение к PostgreSQL, создание БД, пользователя
По умолчанию при установке PostgreSQL в системе есть один пользователь —postgres.
Я не рекомендую использовать его для работы с базами данных, лучше создавать пользователей для каждой БД отдельно.
Чтобы подключиться к серверу postgres нужно ввести команду:
Открылась консоль PostgreSQL. Покажем несколько простых примеров управления PostgreSQL из консоли psql.
Т.к. любой пользователь системы может авторизоваться в postrgesql, сначала нужно изменить пароль пользователя postgres.
ALTER ROLE postgres WITH PASSWORD 'super_str0ng_pa$$word';
Сразу создадим новую базу данных, пользователя и дадим ему полные права на эту БД:
Подключиться к БД:
Вывести список таблиц:
Вывести список запросов к базе:
Сбросить все подключения к базе:
Информацию о текущей сессии можно получить так:
Для завершения работой с консолью psql, выполните:
Как вы уже заметили, синтаксис не отличается от той же MariaDB или MySQL и поэтому особо останавливаться на однотипных командах мы не будем.
Отметим, что для более удобного управления базами PostgreSQL из веб-интерфейса рекомендуется использовать pgAdmin4 (написан на Python и Javascript/jQuery). Это аналог привычному многим веб разработчикам PhpMyAdmin.
Основные параметры конфигурационных файлов PostgreSQL
Файлы конфигурации postgresql находятся в директории /var/lib/pgsql/11/data:
- postgresql.conf — непосредственно сам файл конфигурации postgresql;
- pg_hba.conf — файл с настройками доступа. В данном файле, можно выставлять различные ограничения для пользователей, устанавливать политику подключения к БД;
- pg_ident.conf — этот файл используется при идентификации клиентов по протоколу ident.
Чтобы запретить локальным пользователям вход в postgres без авторизации, в файле pg_hba.conf укажите:
Рассмотрим наиболее важные параметры в конфигурационном файле postgresql.conf:
Резевное копирование и восстановление БД в PostgreSQL
Создать резервную копию в PostgreSQL БД можно несколькими способами. Рассмотрим самый простой вариант.
Для начала проверим, какие БД запущены на сервере:
У нас имеются 4 базы данных, 3 из которых системные (postgres и template).
Ранее мы создавали БД с именем “mydbtest”, на ее примере и выполним резервное копирование.
Один из способов резервного копирования, это выполнение его с помощью утилиты pg_dump:
Чтобы восстановить указанный дамп в нужную БД, можно воспользоваться утилитой psql:
sudo -u postgres psql mydbtest < /root/dupm.sql
Так же можно создать бэкап в специальном формате дампа и сжатом с применением gzip:
sudo -u postgres pg_dump -Fc mydbtest > /root/dumptest.sql
sudo -u postgres pg_restore -d mydbtest /root/dumptest.sql
Более расширенные настройки можно посмотреть в справке по данным утилитам:
man psql
man pg_dump
man pg_restore
Оптимизация и тюниг PostgreSQL
В предыдущей статье о MariaDB, мы показывали, как можно привести практически к идеалу параметры конфигурационного файла my.cnf с помощью тюнеров. Для PostgreSQL существует, хотя правильнее сказать существовала такая утилита как PgTun, но к сожалению она уже давно не обновляется. В тоже время есть масса онлайн сервисов, с помощью которых вы можете настроить оптимальную конфигурацию для вашего PostgreSQL. Мне нравится сервис pgtune.leopard.in.ua.
Интерфейс очень прост. Вам нужно указать параметры вашего сервера (профиль, процессоры, память, тип дисков) и нажать кнопку “Generate”. В результате вам будет предложен вариант конфигурационного файла postgresql.conf с рекомендуемыми значениями основных параметров СУБД.
Например, для VPS SSD сервера с 2 Гб оперативной памятью, 2 CPU для запуска нескольких сайтов рекомендуются следующие настройки в postgresql.conf:
И это на самом деле не единственный ресурс, на момент написания статьи, были достпны аналогичные сервисы:
С помощью подобных сервисов, можно быстро настроить начальные параметры СУБД для вашего оборудования и выполняемых задач. В дальнейшем уже нужно опираться не только на ресурсы сервера, но и анализировать в целом работу БД, ее размер, количество коннектов и на основе этого, выполнять дальнейшую тонкую донастройку параметров PostgreSQL.
Postgresql - это объектно-реляционная база данных с высокой степенью масштабируемости и SQL совместимым синтаксисом и открытым исходным кодом. Она разрабатывается в калифорнийском университете Беркли. В последнее время PostgreSQL, благодаря своим преимуществам набирает большую популярность наряду с везде используемой mysql.
Вы можете узнать чем отличаются mysql и postgresql в отдельной статье, а сегодня мы рассмотрим как установить Postgresql CentOS 7, а также как выполнить минимальную настройку базы данных для подготовки ее к использованию.
Установка Postgresql CentOS
Самый первый шаг заключается в установке программы в вашу систему. Как я уже говорил, база данных довольно популярна, поэтому она есть в официальных репозиториях. Но если вы хотите получить самую свежую версию, то нужно добавить официальный репозиторий:
В CentOS 6 команда будет выглядеть вот так:
После того как репозиторий будет добавлен к вашей системе вы можете перейти к установке программы. На данный момент последняя версия Postgresql 9.6. Именно для нее мы добавили репозиторий. Возможно, для более новых версий вам придется посетить сайт и посмотреть не появилась ли новая версия. Установка Postgresql CentOS 7 версии 9.6 выполняется командой:
sudo yum install postgresql96-server postgresql96
Сразу после установки Postgresql сервер еще не готов к использованию, нужно инициализировать необходимые базы данных. Для этого выполните:
Команде потребуется некоторое время для начальной инициализации. После ее завершения в переменной PGDATA будет сохранен путь к папке с базами данных. В моем случае это /var/lib/pgsql/9.5/data/.
Дальше запускаем сервер баз данных и добавляем его в автозагрузку:
sudo systemctl start postgresql-9.6
$ sudo systemctl enable postgresql-9.6
Настройка Postgresql CentOS 7
Теперь сервер баз данных Postgresql установлен и запущен. Нам осталось проверить как все работает, настроить пользователей и свою первую базу данных. Настройка Postgresql CentOS 7 изначально выполняется только от пользователя postgres поэтому переключаемся на этого пользователя с помощью команды su:
sudo su - postgres
Команда выполняется от имени администратора, потому что иначе у вас спросят пароль, а вы его не знаете. Для доступа к консоли Postgresql будем применять команду psql:
Смотрим информацию о подключении:
Первое что здесь можно сделать, это создать пароль для postgres:
Дальше закройте оболочку командой:
Пользователь postgres - это аналог суперпользователя для Postgresql. Но не всегда безопасно использовать вход от имени суперпользователя. Нам нужно создать обычного пользователя, который может только управлять базами данных. Для этого выполните в консоли от имени postgres:
Дальше нужно ввести имя роли и ответить на несколько вопросов, а также повторить процедуру задания пароля как для postgres. Чтобы вы могли использовать postgresql через терминал от имени этого пользователя добавьте пользователя UNIX:
sudo adduser user
Нам осталось только создать новую базу данных:
Теперь у вас есть все необходимое для полноценной работы с программой.
Установка Phppgadmin CentOS 7
Не очень удобно работать с консольным интерфейсом управления базами данных. Иногда нужно просто и быстро добавить базу данных или создать пользователя. Для этого можно использовать веб-интерфейс phppgadmin. Для установки программы выполните:
sudo yum install phpPgAdmin
Также нужно, чтобы на вашей машине был установлен и запущен веб-сервер Apache. Чтобы перезапустить Apache выполните:
После завершения установки вы сможете открыть адрес phpPgAdmin в браузере. Только обратите внимание на регистр букв, его нужно сохранять как при установке пакета, так и в браузере:
Выводы
В этой статье мы рассмотрели как выполняется установка Postgresql CentOS 7. Как видите, здесь нет ничего очень сложного. Postgresql имеет некоторые особенности, например, авторизация пользователя в системе для управления базой данных. Если у вас остались вопросы, спрашивайте в комментариях!
На завершение видео о про преимущества Postgresql:
Читайте также: