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
Спасибо тебе за это.
Обещание Престона