Как заставить перезагрузку pg_ctl работать?Запрашивает пароль пользователя postgres, но не принимает его - PullRequest
0 голосов
/ 14 марта 2019

Я установил 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. Эта учетная запись была создана с инициализацией, насколько я понимаю, и не имеет пароля, но простое нажатие клавиши ввода не принимается.

Затем я попытался изменить пароль, выполнив команду 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 Ответ

1 голос
/ 14 марта 2019

Вы запутались на многих уровнях.

  1. Пользователи базы данных отличаются от пользователей операционной системы. Если вы измените пароль postgres в базе данных, у пользователя операционной системы все еще не будет пароля.

    Хотя я не вижу, как это сломает базу данных. Возможно, ваш файл pg_hba.conf настроен неправильно.

  2. Вы запускаете pg_ctl reload как пользователь операционной системы postgres, а не как root, поскольку postgres владеет процессами PostgreSQL, поэтому нет необходимости в sudo и, следовательно, нет необходимости в операционной системный пароль.

Вероятно, вам следует прочитать документацию PostgreSQL о аутентификации клиента и управлении пользователями .

...