PostgreSQL: сброс пароля PostgreSQL в Ubuntu [закрыто]


97

В Ubuntu я установил базу данных PostgreSQL и создал суперпользователя для сервера.

Если я забыл пароль суперпользователя postgresql, как я могу сбросить его (пароль) для этого пользователя?

Я попытался удалить его, а затем установить снова, но ранее созданный суперпользователь остался.

Ответы:


217

Предполагая, что вы являетесь администратором машины, Ubuntu предоставила вам право sudo запускать любую команду от имени любого пользователя.
Также, если вы не ограничили права в pg_hba.confфайле (в /etc/postgresql/9.1/mainкаталоге), он должен содержать эту строку как первое правило:

# Database administrative login by Unix domain socket  
local   all             postgres                                peer

(О местонахождении файла: 9.1это основная версия postgres и mainимя вашего «кластера». Оно будет отличаться при использовании более новой версии postgres или нестандартных имен. Используйте pg_lsclustersкоманду, чтобы получить эту информацию для вашей версии / системы).

В любом случае, если в pg_hba.confфайле нет этой строки, отредактируйте файл, добавьте его и перезагрузите службу с помощью sudo service postgresql reload.

Затем вы сможете войти в систему psqlкак суперпользователь postgres с помощью этой команды оболочки:

sudo -u postgres psql

Оказавшись внутри psql, введите команду SQL:

ALTER USER postgres PASSWORD 'newpassword';

В этой команде postgres- имя суперпользователя. Если был забыт пароль пользователя ritesh, команда была бы такой:

ALTER USER ritesh PASSWORD 'newpassword';

Ссылки: Документация по PostgreSQL 9.1.13, Глава 19. Аутентификация клиента

Имейте в виду, что вам нужно вводить postgres с одним S в конце

Если оставить пароль открытым текстом в истории команд или в журнале сервера является проблемой, psql предоставляет интерактивную мета-команду, чтобы избежать этого, в качестве альтернативы ALTER USER ... PASSWORD:

\password username

Он запрашивает пароль с двойным слепым вводом, затем хеширует его в соответствии с password_encryptionнастройкой и выдает ALTER USERкоманду серверу с хешированной версией пароля вместо версии с открытым текстом.


2
Я использовал ваш метод, мое имя суперпользователя - ritesh, мой pg_hba.conf - это то, что вы упомянули. Я запустите команду "ALTER USER postgres PASSWORD 'newpassword';" консоль показывает «ALTER ROLE». затем я вышел, используя ctrl + c, после этого я запускаю команду createuser. он показывает для ввода пароля, я ввел новый пароль, но он выдает мне ошибку «createuser: не удалось подключиться к базе данных postgres: FATAL : проверка пароля не удалась для пользователя "ritesh" ". как создать пользователя и какой пароль должен быть для этой команды ??
— Ritesh Mehandiratta

Если вы хотите сменить пароль для ritesh, измените приведенный выше SQL наALTER USER ritesh PASSWORD 'newpassword'
— Даниэль Верите

вы должны перезапустить postgres после изменения pg_hba.conf ....
— Mahdi

1
Не нужно перезагружать, просто используйте pg_ctl reload.
— hbn

Спасибо тебе за это.
— Обещание Престона
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.