Шаблон:Запуск PostgreSQL в Linux
При установке PostgreSQL на ОС Linux: Debian, Ubuntu, Эльбрус, CentOS и ряде других, при запуске сервиса PostgreSQL ОС может сообщить об отсутствии служебной БД(кластера), по указанному пути. Это означает, что кластер БД не инициализинован.
Для инициализации кластера необходимо выполнить следующие команды:
1. Проверить остановлен ли сервис PostgreSQL:
sudo /etc/init.d/postgresql status или
sudo service postgresql status или
sudo systemctl postgresql status
Вы должны получить ответ системы, о том, что сервис не активен.
2. Инициализация кластера PostgreSQL должна производиться от имени пользователя, который в последствии будет считаться администратором БД. По умолчанию это пользователь - postgres
Поэтому выполняем команду от имени этого пользователя: sudo -u postgres /usr/lib/postgresql/<версия PostgreSQL>/bin/initdb -D /var/lib/postgresql/<версия PostgreSQL>/main или
sudo -u postgres /usr/lib/postgresql/<версия PostgreSQL>/bin/initdb -D /var/lib/postgresql/<версия PostgreSQL>/data
Путь к БД, требуемый по умолчанию можно увидеть в сообщении об ошибке при старте сервиса PostgresSQL. Если есть необходимость в нестандартном месте расположения БД, то него необходимо указать при инициализации кластера.
3. Если используется нестандартное расположение БД, тогда после создания кластера и до запуска сервиса PosqtgreSQL необходимо внести изменения в файл postgresql.conf
data_directory = '<полный путь к БД из строки инициализации>'
hba_file = '<полный путь к файлам конфигурации>/pg_hba.conf'
ident_file = '<полный путь к файлам конфигурации>/pg_ident.conf'
external_pid_file = '/var/run/postgresql/pg-main.pid'
Файлы конфигурации могут располагаться либо в каталоге /etc/postgresql/<версия postgresql>/main, либо в каталоге, куда сгенерирована БД кластера, например, /var/lib/postgresql/<версия postgresql>/main, либо /var/lib/postgresql/<версия postgresql>/data, либо указанный путь.
4. После внесенных изменений необходимо запустить сервис:
sudo /etc/init.d/postgresql start или
sudo service postgresql start или
sudo systemctl postgresql start
Проверяем работу postgresql :
psql -U postgres -h localhost
Если будет запрос пароля, тогда необходимо ввести пароль от пользователя postgres(по умолчанию - postgres) в командной строке сервиса управления БД набрать: \l. При этом получим список баз данных. Для выхода нужно набрать: \q.
5. Для проверки автостарта сервиса postgresql необходимо перезагрузить компьютер.
Проверяем, узнав статус по командам, указанным п п.1. Если сервис не активен, тогда надо выполнить команду, позволяющую запускать postgresql при старте ОС В Debian и ОС, созданных на его основе: systemctl enable postgresql В CentOS и, созданных на основе RedHat: chkconfig postgresql on