Как задать пароль пользователю postgres, если авторизация по ssh-ключу?
Добрый день, коллеги! Такой вопрос - есть сервер на Ubuntu, авторизация по ssh-ключу (допустим, имя user12). Собрал Postgresql, пытаюсь выполнить sudo -u postgres psql template1 - запрашивает пароль от user12, а его-то как раз и нет. Как здесь можно выкрутиться и задать в конечном итоге пароль для пользователя postgres? Спасибо за помощь.
Пароль в итоге установил для postgres, пробую так:
psql -U postgres template1
Password for user postgres:
psql: error: connection to server on socket "/var/run/postgresql/.s.PGSQL.5432" failed: FATAL: password authentication failed for user "postgres"
Если перейти под postgres (su postgres) и под ним просто запустить psql - та же ошибка аутентификации. Хотя в pg_hba.conf все уже изменил (написал выше). Что еще проверить?
В чем затык - обычно я вот так все это проделывал: sudo -u postgres psql и просто подтверждал паролем своей учетки. В данном случае это не работает, потому что я не знаю пароль, есть только ssh-ключ. Поэтому остается вариант psql -U postgres - а здесь возникает уже ошибка соединения с сервером, хотя все это локально происходит. Вот не пойму, что не нравится серверу, я ведь под пользователем postgres пытаюсь подключиться?
Точно - затупил слегка. Скопипастил с тестового сервера, там через sudo действительно нужно было выполнять. Спасибо!
Upd: Не все так просто - привел в порядок файл /etc/postgresql/14/main/pg_hba.conf:
# Database administrative login by Unix domain socket
local all postgres md5
# TYPE DATABASE USER ADDRESS METHOD
# "local" is for Unix domain socket connections only
local all all md5
Заменил peer на md5, после этого пытаюсь:
psql -U postgres template1
В ответ: Password for user postgres: - пароль не установлен, то есть в любом случае все заканчивается так: FATAL: password authentication failed for user "postgres"
Тогда пробую просто psql, чтобы в консоли заменить через ALTER USER, но и здесь засада:
Password for user user12:
А у меня ведь ssh-ключ и пароля нет для учетки user12. Как быть?
- Отредактируй строку в pg_hba - на время замени local all postgres md5 на local all postgres trust, выстави пароль для него, а затем верни обратно
- То же самое, что и выше, но для твоего пользователя
- Попроси админов это починить
А как между собой связаны postgres, пароль пользователя unix и способ авторизации ssh? Да никак.
ssh аутентификация по ключу не исключает наличия пароля пользователя, sudo может быть настроен без пароля, авторизация postgresql может быть настроена без sudo раз вы как-то собрали и запустили СУБД без использования запароленного sudo этого пользователя.