Я внес некоторые изменения в pg_hba.conf и хочу, чтобы они повлияли на него. Я нашел несколько мест, где люди говорят, что я могу сказать PostgreSQL перезагрузить, но перечислено несколько различных методов, и ни один из них пока не работает для меня.
Наиболее авторитетная ссылка, которую я нашел, касается команды pg_ctl, но я не уверен, где находится моя папка PGDATA. Я буду искать.
Я использую PostgreSQL 8.3 на Ubuntu 8.10.
Хотя первоначальный человек, задававший вопрос, подразумевал, что он использует Ubuntu 8.10, многие люди, использование более поздних версий Ubuntu также может натолкнуться на эту проблему. И это может работать и с 8.10. Я не знаю, у меня нет установки 8.10, с которой можно было бы попробовать ..
Хорошо, давайте перейдем к делу. Итак, крутой "новый" способ управления сервисами - использовать service
команда. Итак, вы можете перезагрузить конфиги с помощью следующей команды:
service postgresql-8.3 reload
естественно, вам нужны соответствующие права, поэтому, скорее всего, потребуется добавить к команде что-то вроде sudo
или su -c root
как это:
sudo service postgresql-8.3 reload
или
su -c root 'service postgresql-8.3 reload'
P.S. Это предложено в документации Ubuntu что что-то, относящееся к этому новому методу, было сделано еще с выпуском 6.10, однако, если я правильно понял это, не было принято в более широкое использование до 9.10.
Вы можете проверить, где находится ваш PGDATA, подключившись к pg и выполнив команду:
show data_directory;
В Ubuntu обычно /var/lib/postgresql/8.3/main/
.
Также вы можете: /etc/init.d/postgresql-8.3 reload
Вариант 1. Из оболочки командной строки
su - postgres
/usr/bin/pg_ctl reload
Вариант 2: Использование SQL
SELECT pg_reload_conf();
Использование любого из этих вариантов не прерывает никаких активных запросов или подключений к базе данных, поэтому эти изменения будут применены незаметно.
Это поможет:
kill -HUP $(head -1 $PGDATA/postmaster.pid)
Если вы не хотите перезагружать сервер и просто отправляете сигнал в postgreSQL, просто введите команду:
pg_ctl reload
Наконец-то я нашел технику, которая мне подходит. Эта статья. Команда такая:
sudo invoke-rc.d postgresql-8.3 reload
Я все еще буду благодарен за отзывы о рекомендуемой технике.
Следующее должно сделать это за вас:
sudo /etc/init.d/postgresql-8.3 reload
В одной строке:
su -c "pg_ctl reload" - postgres
На современном Linux disto с systemd мне пришлось использовать systemctl для перезапуска postgres. Вот что работало на CentOS7:
Сначала найдите точное имя текущей службы Postgres:
systemctl | grep postgres
Результаты:
postgresql-10.service
loaded active running PostgreSQL 10 database server
Затем используйте это имя для перезапуска Postgres:
sudo systemctl restart postgresql-10.service
ls /etc/init.d/ Посмотрите, что там видите postgresql?
sudo /etc/init.d/postgresql reload