#postgresql #postgresql-11
#postgresql #postgresql-11
Вопрос:
Я установил PostgreSQL 11 на виртуальную машину CentOS 7, используя yum
в соответствии с инструкциями Postgres на сайте. После установки я сделал
/usr/pgsql-11/bin/postgresql-11-setup initdb
systemctl enable postgresql-11
systemctl start postgresql-11
а затем пошел и настроил postgresql.conf
файл.
Теперь мне нужно перезагрузить базу данных, чтобы эти изменения вступили в силу.
Я попытался sudo pg_ctl reload
использовать postgres
учетную запись, которая затем запрашивает у меня postgres
пароль. Насколько я понимаю, эта учетная запись была создана с инициализацией и не имеет пароля, но простое нажатие enter не принимается.
Затем я попытался изменить пароль, выполнив su -u postgres psql postgres
из root и выполнив оболочку, ALTER USER postgres PASSWORD 'myPasswordHere';
которая вернула ALTER ROLE
результат в качестве подтверждения. При повторной попытке перезагрузки, как указано выше, новый пароль по-прежнему не принимается.
Затем я попытался выполнить это systemctl restart postgres-11
от имени root, но, похоже, это полностью нарушило работу базы данных, не позволяя мне выполнять какие-либо процессы, связанные с базой данных, или даже получить доступ к оболочке Postgres.
Мне пришлось удалить каталог данных и повторно запустить initdb
команду выше, чтобы перезапустить все (и pg_ctl
команды по-прежнему не принимают мой пароль).
Как мне правильно перезагрузить базу данных, чтобы мои изменения в postgresql.conf
были реализованы?
Комментарии:
1. Если
systemctl restart postgres-11
ваша установка «сломалась», то вы, вероятно, внесли вpostgresql.conf
некоторые неправильные изменения, и теперь Postgres отказывается запускаться. Вы пытались отменить эти изменения, а затемrestart
службу? Моя рекомендация — не редактироватьpostgresql.conf
напрямую, а добавитьcustom.conf
со всеми изменениями, а затем включить это в концеpostgresql.conf
— таким образом, вы всегда будете знать, что вы изменили, и вы можете легко отменить, не включая пользовательский конфигурационный файл.
Ответ №1:
Вы запутались на многих уровнях.
-
Пользователи базы данных отличаются от пользователей операционной системы. Если вы измените
postgres
пароль в базе данных, у пользователя операционной системы по-прежнему не будет пароля.Я не вижу, как это нарушает работу базы данных. Возможно, ваш
pg_hba.conf
файл неправильно настроен. -
Вы запускаетесь
pg_ctl reload
как пользователь операционной системыpostgres
, а не какroot
, потому чтоpostgres
вам принадлежат процессы PostgreSQL, поэтому нет необходимости вsudo
и, следовательно, нет необходимости в пароле операционной системы.
Вероятно, вам следует прочитать документацию PostgreSQL о аутентификации клиента и управлении пользователями.
Комментарии:
1. Спасибо за разъяснение. Использование
sudo
передpg_ctl
командой, похоже, является проблемой. Также мне нужно было сделатьpg_ctl restart
вместо ‘reload’, который сработал. Он выдал строку, в которой говорилось, что в разрешении отказано, не удается перейти в каталог «мой текущий каталог», несмотря на то, что я уточнил каталог данных с-D
флагом, но перезагрузка все еще работала.