Когда я настраивал postgresql в Linux, я следовал руководству, которое, как мне кажется, заставило меня изменить пароль учетной записи postgres, и я не знал ничего лучшего. Пожалуйста, простите мое незнание.
Когда я набираю «psql postgres», он запрашивает пароль, и работает только один пароль. Я пробовал следовать предыдущим ответам, реализовав «sudo passwd --lock postgres» и «sudo -u postgres psql postgres» с «\ password postgres» и установив новый пароль (который не работает).
Я боюсь редактировать / etc / passwd и ставить * вместо пароля, потому что у этого комментария очень мало голосов, и я не знаю, что он на самом деле будет делать.
Все, что я пробую (даже изменение md5 на доверие к pg_hba.conf), после того, как я ввожу «sudo /etc/init.d/postgresql restart», psql postgres ВСЕ ЕЩЕ ТРЕБУЕТСЯ пароль и принимает только один действующий пароль. Все остальное возвращает «psql: FATAL: аутентификация пароля не удалась».
Что я могу сделать?
Если ваш метод аутентификации peer
лайк
local all postgres peer
и / или
local all all peer
в pg_hba.conf
, затем подключитесь как пользователь Linux postgres
в базу данных.
sudo -u postgres psql
Вам не понадобится пароль, даже если он установлен.
Примечание: psql -U postgres postgres
запустить как другой пользователь Linux как postgres
не работает в этом случае и не работает с psql: FATAL: Peer authentication failed for user "postgres"
.
Если ваш метод аутентификации md5
, то для подключения вам потребуется правильный пароль.
Прокомментируйте все существующие строки, начинающиеся с "local" в pg_hba.conf
и добавить строку
local all postgres trust
Перезапустите postgres
service postgresql restart
Подключиться к базе данных
# as any linux user
psql -U postgres
# or as user postgres
sudo -u postgres psql
Сменить пароль
ALTER USER postgres WITH PASSWORD 'password';
Выход
\q
Восстановите свои изменения в pg_hba.conf
, по умолчанию для postgresql 9.6 в Debian 9.8.0 это
# Database administrative login by Unix domain socket
local all postgres peer
# TYPE DATABASE USER ADDRESS METHOD
# "local" is for Unix domain socket connections only
local all all peer
# IPv4 local connections:
host all all 127.0.0.1/32 md5
# IPv6 local connections:
host all all ::1/128 md5
# Allow replication connections from localhost, by a user with the
# replication privilege.
#local replication postgres peer
#host replication postgres 127.0.0.1/32 md5
#host replication postgres ::1/128 md5
Перезапустите postgres
service postgresql restart
Заметка 2: Если вы хотите изменить пароль для host
запись, затем сделайте то же самое, что и выше, используя метод trust
и подключитесь с опцией имени хоста, используя psql -U postgres -h localhost postgres
.