Как настроить Postgres на Amazon Linux

Вопрос или проблема

Большинство учебников устанавливают и postgresql, и postgresql-server:

$ sudo yum install postgresql postgresql-server

Установлено:
  postgresql.x86_64 0:9.2.24-1.amzn2.0.1                         
  postgresql-server.x86_64 0:9.2.24-1.amzn2.0.1                        

Установлено зависимое ПО:
  postgresql-libs.x86_64 0:9.2.24-1.amzn2.0.1                                                                                          

Программы установлены здесь:

$ which psql
/usr/bin/psql


$ which postgres
/usr/bin/postgres

На этом этапе большинство учебников переходит к initdb и pg_ctl <path> start

$ cd '/usr/lib'

$ service postgresql initdb
Совет: предпочтительный способ сделать это сейчас - "postgresql-setup initdb"

$ sudo postgresql-setup initdb
[sudo] пароль для CORP\layne.sadler: 
Инициализация базы данных ... OK


$ systemctl enable postgresql
Создан символическая ссылка из /etc/systemd/system/multi-user.target.wants/postgresql.service в usr/lib/systemd/system/postgresql.service.



$ systemctl start postgresql
[18:47:32]  /usr/bin ☯  systemctl status postgresql
● postgresql.service - Сервер базы данных PostgreSQL
   Загружено: загружено (/usr/lib/systemd/system/postgresql.service; включено; предустановлено: отключено)
   Активно: активно (работает) с Чт 2020-03-05 18:47:32 EST; 7 с. назад
  Процесс: 25559 ExecStart=/usr/bin/pg_ctl start -D ${PGDATA} -s -o -p ${PGPORT} -w -t 300 (код=вышел, статус=0/УСПЕШНО)
  Процесс: 25553 ExecStartPre=/usr/bin/postgresql-check-db-dir ${PGDATA} (код=вышел, статус=0/УСПЕШНО)
 Главный PID: 25562 (postgres)
   CГруппа: /system.slice/postgresql.service
           ├─25562 /usr/bin/postgres -D /var/lib/pgsql/data -p 5432
           ├─25564 postgres: процесс ведения журнала   
           ├─25566 postgres: процесс контрольной точки   
           ├─25567 postgres: процесс записи   
           ├─25568 postgres: процесс записи WAL   
           ├─25569 postgres: процесс запуска автосборщика   
           └─25570 postgres: процесс сбора статистики

$ passwd postgres  

замечание: /usr/bin/postgres -D /var/lib/pgsql/data -p 5432

ЗАСТРЯЛ

$postgres
postgres не знает, где найти файл конфигурации сервера.
Вы должны указать опцию вызова --config-file или -D или установить переменную окружения PGDATA.

$ psql
psql: ФАТАЛЬНАЯ ОШИБКА:  роль "CORP\layne.sadler" не существует

$ sudo pg_ctl -D postgresql-setup initdb
pg_ctl: не может быть запущен от имени root
Пожалуйста, войдите (например, используя "su") как (непривилегированный) пользователь, который будет
владеть процессом сервера.

# похоже, что я не могу войти как su, хотя другие команды sudo работают

Примечания:

  • ОС утверждает, что это rhel fedora centos, но не имеет библиотек rhel-release.
  • Похоже, что epel-release и dnf заблокированы для установки.
  • ^^^ инструкции по установке postgres требуют указанных выше инструментов.

CentOS (Community ENTerprise Operating System) — это пользовательская (повторная) сборка RHEL (Red Hat Enterprise Linux), с изменением брендинга и некоторыми другими деталями. Она стремится быть полностью бинарно совместимой, вплоть до ошибок. У нее нет доступа к репозиториям пакетов RHEL, она использует свои собственные. EPEL (Extra Packages for Enterprise Linux) — это проект Fedora, который предлагает пакеты для RHEL/CentOS, которых нет в RHEL.

Не знаю, откуда взялось “dnf заблокирован для установки”. Обратите внимание, что в RHEL/CentOS dnf относительно нов, (я думаю, это альтернатива, начиная с версии 7), возможно, доступен только (устаревший) yum? Вы можете попробовать yum install dnf, если это необходимо. В зависимости от вашей точной версии CentOS, его может вообще не быть.

Последнее сообщение об ошибке, которое вы приводите, довольно ясно: Postgres не может найти/прочитать свою конфигурацию. Проверьте внимательно, чтобы установка была выполнена правильно. Неправильное имя файла где-либо может сорвать все.

Ответ или решение

Когда вы настраиваете PostgreSQL на Amazon Linux, важно выполнить несколько шагов, чтобы обеспечить правильное функционирование базы данных. В этом руководстве мы рассмотрим, как установить и настроить PostgreSQL, а также устранить распространённые ошибки, которые могут возникнуть в процессе.

Шаг 1: Установка PostgreSQL

Первый шаг — установка необходимых пакетов. Используйте следующую команду для установки PostgreSQL и его серверной части:

sudo yum install postgresql postgresql-server

После установки, вы можете проверить, что PostgreSQL установлен, командой:

which psql
which postgres

Эти команды должны вернуть путь к установленным программам, например:

/usr/bin/psql
/usr/bin/postgres

Шаг 2: Инициализация базы данных

Для инициализации базы данных выполните следующие команды. Обратите внимание, что на более новых версиях системы предпочтительно использовать postgresql-setup:

sudo postgresql-setup initdb

Если вы столкнётесь с проблемами при использовании команды initdb, попробуйте следующее:

sudo service postgresql initdb

При успешной инициализации вы увидите сообщение, подобное следующему:

Инициализация базы данных ... OK

Шаг 3: Включение и запуск службы PostgreSQL

После инициализации базы данных необходимо включить и запустить службу PostgreSQL. Выполните следующие команды:

sudo systemctl enable postgresql
sudo systemctl start postgresql

Вы можете проверить состояние службы с помощью:

systemctl status postgresql

Если всё настроено правильно, вы должны увидеть статус, как показано ниже:

Active: active (running)

Шаг 4: Настройка пользователя и ролей

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

  1. Сначала измените пользователя на postgres, который был создан в процессе установки:
sudo su - postgres
  1. Затем запустите psql для создания нового пользователя:
createuser --interactive

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

Шаг 5: Решение возможных проблем

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

Ошибка: «postgres не знает, где найти файл конфигурации сервера»

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

export PGDATA=/var/lib/pgsql/data

Ошибка: «роль "CORP\layne.sadler" не существует»

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

Причина: Не удаётся запустить pg_ctl как root

Процесс SQL должен запускаться от имени пользователя PostgreSQL, а не под root. Убедитесь, что вы сменили пользователя как указано ранее:

sudo su - postgres

Заключение

Настройка PostgreSQL на Amazon Linux требует выполнения нескольких последовательных шагов от установки пакетов до конфигурации пользователей. Следуя предоставленным инструкциям и решая возникающие трудности, вы сможете успешно настроить свою базу данных PostgreSQL.

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

Оцените материал
Добавить комментарий

Капча загружается...