Как узнать пароль postgresql linux

Обновлено: 03.07.2024

Вывод: в этом руководстве мы шаг за шагом покажем, как сбросить пароль пользователя postgres в PostgreSQL.

По какой-то причине после установки PostgreSQL вы можете забыть пароль пользователя postgres. В этом случае вам нужно знать, как сбросить пароль.

PostgreSQL использует файл конфигурации pg_hba.conf, хранящийся в каталоге данных базы данных (например, C:\Program Files\PostgreSQL\12\data в Windows), для управления аутентификацией клиента. hba в pg_hba.conf означает аутентификацию на основе хоста.

Чтобы сбросить пароль пользователя postgres, вам нужно изменить некоторые параметры в этом файле конфигурации, войти в систему как postgres без пароля и сбросить пароль.

Следующие шаги показывают, как сбросить пароль для пользователя postgres:

Шаг 1. Сделайте резервную копию файла pg_hba.conf, скопировав его в другое место или просто переименовав в pg_hba.conf.bk

Шаг 2. Отредактируйте файл pg_dba.conf и измените все локальные подключения с md5 на доверительные. Сделав это, вы сможете войти на сервер базы данных PostgreSQL без использования пароля.

Шаг 3. Перезапустите сервер PostgreSQL. Если вы работаете в Windows, вы можете перезапустить PostgreSQL из служб:


Или выполните следующую команду из оконного терминала:

«C:\Program Files\PostgreSQL\12\data» — это каталог данных.

Шаг 4. Подключитесь к серверу базы данных PostgreSQL с помощью любого инструмента, такого как psql или pgAdmin:

PostgreSQL не требует пароля для входа.

Шаг 5. Выполните следующую команду, чтобы установить новый пароль для пользователя postgres.

Шаг 6. Восстановите файл pg_dba.conf, перезапустите сервер базы данных PostgreSQL и подключитесь к серверу базы данных PostgreSQL с новым паролем.

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

Я либо забыл, либо опечатался (во время установки) пароля пользователя Postgres по умолчанию. Кажется, я не могу запустить его и получаю следующую ошибку:

Можно ли сбросить пароль или как создать нового пользователя с правами суперпользователя?

Я новичок в Postgres и только что установил его в первый раз. Я пытаюсь использовать его с Rails и использую Mac OS X Lion.


Я пока не могу комментировать ответы, поэтому приходится делать это так. Я сделал то, что сказал SaiyanGirl, однако мне все еще нужно было ввести пароль, который был «postgres», чтобы войти в систему, тогда я мог сбросить пароль

15 ответов 15

найдите файл pg_hba.conf — он может находиться, например, в /etc/postgresql-9.1/pg_hba.conf.

cp pg_hba.conf pg_hba.conf-backup

поместите следующую строку (либо как первую строку без комментариев, либо как единственную):

Для всех приведенных ниже случаев (локальных и хостовых), за исключением раздела репликации, если у вас его нет, его необходимо изменить следующим образом, не должно быть аутентификации MD5 или однорангового узла.

перезапустите сервер PostgreSQL (например, в Linux:)

sudo /etc/init.d/postgresql перезапустить

Если служба (демон) не запускает отчет в файле журнала:

локальные подключения не поддерживаются этой сборкой

вы должны изменить

местный всем всем доверять

host all all 127.0.0.1/32 trust

теперь вы можете подключиться как любой пользователь. Подключитесь как суперпользователь postgres (обратите внимание, имя суперпользователя может отличаться в вашей установке. Например, в некоторых системах оно называется pgsql .)

psql -U postgres

psql -h 127.0.0.1 -U postgres

(обратите внимание, что с первой командой вы не всегда будете подключены к локальному хосту)

Сбросить пароль ('замените my_user_name на postgres, так как вы сбрасываете пользователя postgres)

ИЗМЕНИТЬ ПОЛЬЗОВАТЕЛЯ my_user_name с паролем my_secure_password;

Восстановите старый pg_hba.conf, так как хранить его очень опасно

cp pg_hba.conf-backup pg_hba.conf

перезапустите сервер, чтобы запустить с безопасным файлом pg_hba.conf

sudo /etc/init.d/postgresql перезапустить


этот ответ НЕ сработал для меня, после того, как я выполню шаг 3, служба не запустится, я не знаю, может быть, это ОС (W8), она просто не запустится.

Помните, что порядок записей в pg_hba.conf важен. Если вы добавите «local all all trust» в конец файла, он не будет работать так, как вы ожидаете, так как предыдущие записи будут сопоставляться первыми. Так что поместите это в начало файла, чтобы получить то, что вы ожидаете.

Если вы столкнулись с этой ошибкой в ​​Windows, продолжайте прокручивать до ответа @SaiyanGirl.Просто измените столбцы МЕТОД существующих записей на «доверять», а затем измените их обратно, когда закончите

При подключении к postgres из командной строки не забудьте добавить -h localhost в качестве параметра командной строки. В противном случае postgres попытается подключиться в режиме аутентификации PEER.

Ниже показан сброс пароля, неудачный вход с аутентификацией PEER и успешный вход с использованием TCP-соединения.

Работа с -h localhost:


Файл pg_hba.conf ( C:\Program Files\PostgreSQL\9.3\data ) был изменен с момента получения этих ответов. Что сработало для меня в Windows, так это открыть файл и изменить МЕТОД с md5 на доверие:

Затем, используя pgAdmin III, я вошел в систему без пароля и изменил пароль пользователя postgres, выбрав Файл -> Изменить пароль

Это не работает, поскольку PgAdmin по-прежнему запрашивает текущий пароль. Я сбросил на «доверие» и перезапустил PgAdmin. По-прежнему не удается выполнить сброс без ввода ТЕКУЩЕГО пароля.

Интересное примечание: при запуске PostgreSQL Server 13 в Windows даже после внесения вышеупомянутых изменений сервер по-прежнему будет запрашивать пароль при попытке подключения (при использовании pgAdmin). Вы можете просто нажать "ОК" (без указания пароля), и сервер пропустит вас. Я не ожидал, что меня попросят.

Чтобы добавить к приведенному выше интересному примечанию, мне пришлось нажать "Отмена"; нажатие «ОК» только что получило еще один запрос на пароль. И всякий раз, когда я пытался что-то сделать, я получал дополнительные требования, так что это не сильно помогало.

Просто примечание: в Linux вы можете просто запустить sudo su - postgres, чтобы стать пользователем postgres, и оттуда изменить то, что требуется, с помощью psql.


Отредактируйте файл /etc/postgresql/ /main/pg_hba.conf и найдите следующую строку:

Отредактируйте строку и измените md5 в конце, чтобы доверять и сохранить файл

Перезагрузите службу postgresql

Это загрузит файлы конфигурации. Теперь вы можете изменить пользователя postgres, войдя в оболочку psql

Обновите пароль пользователя postgres

Отредактируйте файл /etc/postgresql/ /main/pg_hba.conf, верните доверие на md5 и сохраните файл

Перезагрузите службу postgresql

Убедитесь, что смена пароля работает

Неужели так сложно предложить решение для Windows? Не все используют Linux с sudo. Как бы я сделал это в Windows??

У меня была эта проблема в Windows 10, и проблема в моем случае заключалась в том, что я просто запускал psql, и по умолчанию он пытался войти в систему с моим именем пользователя Windows ("Nathan"), но не было пользователя PostgreSQL. с этим именем, и мне об этом не говорили.

Поэтому решение состояло в том, чтобы запустить psql -U postgres, а не просто psql , и тогда пароль, который я ввел при установке, сработал.


ДЛЯ WINDOWS: (что мне помогло)

Откройте командную строку и перейдите в папку C:\Program Files\PostgreSQL\12\data. Обычно это правильный путь. Возможно, он хранится где-то еще. Обратите внимание, что если у вас другая версия postgresql, будет другой номер. Это не имеет значения.

Найдите файл pg_hba.conf и скопируйте его в другое место (таким образом у вас будет неизмененная версия этого файла, и вы сможете просмотреть его после того, как мы внесем некоторые изменения)

Откройте файл pg_hba.conf (не резервную копию, а оригинальный)

Найдите несколько строк, начинающихся с host в нижней части файла:

host all all 127.0.0.1/32 md5

host all all ::1/128 md5

репликация узла все 127.0.0.1/32 md5

репликация хоста все ::1/128 md5

Замените md5 на доверие:

host all all 127.0.0.1/32 trust

host all all ::1/128 trust

репликация хоста все 127.0.0.1/32 доверяют

репликация хоста все ::1/128 доверия

Закрыть этот файл

Перейдите к строке поиска в Windows и откройте приложение "Сервисы". Найдите postgres и перезапустите его. изображение сервисного приложения

Напишите cd.. в cmd, а затем cd bin. Ваш путь должен быть C:\Program Files\PostgreSQL\12\bin

Введите: psql -U postgres -h локальный хост

Введите: ALTER USER postgres с паролем ' '; Убедитесь, что вы включили ; в конце должно отображаться «ALTER ROLE» как указание на то, что предыдущая строка была выполнена успешно

Откройте исходный файл pg_hba.conf и вернитесь с доверия к md5

Перезапустите сервер с помощью приложения "Службы", как и раньше


Добавление ответа для пользователя Windows для последней версии postgres (>10),

Перейдите в место установки postgres и найдите pg_hba.conf , вы найдете его в ..\postgres\data\pg_hba.conf

Откройте этот файл с помощью блокнота, найдите эту строку,

Измените метод с md5 на доверие,

Теперь перейдите в свою оболочку SQL (PSQL) и оставьте все пустым,

На этот раз пароль не будет запрашиваться, и вы войдете в систему,

Теперь запустите эту строку: ALTER USER yourusername WITH SUPERUSER

Теперь вы можете выйти из оболочки с помощью \q

Снова перейдите в файл pg_hba.conf и снова измените МЕТОД с доверия на md5 и сохраните его.

Теперь войдите в систему с новым пользователем и паролем, и вы сможете проверить атрибуты \du.


Что я сделал, чтобы решить ту же проблему:

Откройте файл pg_hba.conf с помощью редактора gedit из терминала:

Он запросит пароль. Введите пароль для входа администратора. Это откроет gedit с файлом. Вставьте следующую строку:

Сохраните и закройте его. Закройте терминал, откройте его снова и выполните эту команду:

Теперь вы войдете в консоль psql. Теперь измените пароль, введя это:

Если он говорит, что пользователь не существует, вместо ALTER используйте CREATE .

Наконец, удалите ту строку, которую вы вставили в pg_hba, и сохраните ее.

Для установки Windows создается пользователь Windows. А "psql" использует этого пользователя для подключения к порту. Если вы измените пароль пользователя PostgreSQL, пароль Windows не изменится. Приведенная ниже командная строка работает, только если у вас есть доступ к командной строке.

Вместо этого вы можете использовать приложение Windows с графическим интерфейсом "c:\Windows\system32\lusrmgr.exe". Это приложение управляет пользователями, созданными Windows. Теперь вы можете изменить пароль.

Если вы находитесь в Windows, вы можете просто запустить

и войдите в postgres с postgres/postgres как пользователь/пароль

Файл .pgpass в домашнем каталоге пользователя или файл, на который ссылается PGPASSFILE, может содержать пароли, которые будут использоваться, если для подключения требуется пароль (и в противном случае пароль не указан). В Microsoft Windows файл называется %APPDATA%\postgresql\pgpass.conf (где %APPDATA% относится к подкаталогу Application Data в профиле пользователя).

Этот файл должен содержать строки следующего формата:

В системах Unix разрешения на .pgpass должны запрещать любой доступ к миру или группе; добиться этого командой chmod 0600 ~/.pgpass. Если разрешения менее строгие, файл будет проигнорирован. В Microsoft Windows предполагается, что файл хранится в безопасном каталоге, поэтому не выполняется специальная проверка разрешений.

Выполните следующие действия:
1) Откройте файл pg_hba.conf в текстовом редакторе.
Этот файл находится в

/каталог данных. Например, /opt/database/data.

2) В файле pg_hba.conf найдите строку для пользователя postgres. Это выглядит примерно так:

local all all password
или
local all postgres md5

Пользователи сети начинают строку с "host", а также указывают IP-адрес и сетевую маску:
host all postgres 10.255.255.10

Если ваша система настроена на одинаковую аутентификацию всех пользователей, вместо имени пользователя вы увидите «все»:
local all all md5
Примечание. Метод может быть установлен как « md5" или "пароль" или один из многих других вариантов.

3) Закомментируйте строку, относящуюся либо ко всем пользователям, либо к пользователю postgres, и добавьте следующую строку:

local all postgres ident sameuser

Приведенная выше строка позволяет вам подключиться от имени пользователя postgres без указания пароля.
Local предназначен только для подключений к сокету домена UNIX.

local all postgres ident sameuser

Совет. Скопируйте изменяемые строки и прокомментируйте исходные строки.

Выполните примерно следующую команду:

6) Выполните следующую команду, чтобы изменить доступ sudo для пользователя postgres:

Это позволяет запускать команды от имени пользователя postgres.

7) Запустите psql, клиент командной строки для PostgreSQL.

Это приводит к тому, что psql открывает базу данных PostgreSQL. Он не должен запрашивать пароль. Вот как выглядит приглашение для входа:

Введите "help", чтобы получить помощь.

8) В командной строке psql выполните следующую команду psql, чтобы изменить пароль базы данных:

ИЗМЕНИТЬ ПОЛЬЗОВАТЕЛЬ postgres С ЗАШИФРОВАННЫМ ПАРОЛЕМ 'пароль';

9) Psql перечисляет следующее, чтобы указать на успех:

10) Введите следующее, чтобы выйти из psql:

11) Снова откройте файл pg_hba.conf и верните исходные настройки. Используйте либо md5, либо аутентификацию по паролю, но md5 более безопасен.

12) Снова перезапустите службу postgres

13) Для проверки снова запустите psql. Он должен запросить у вас (сброс) пароль.

не забудьте пароль postgres

В этом посте я делюсь несколькими шагами по восстановлению забытого пароля пользователя postgres (пользователя-администратора) PostgreSQL.

Вчера я просмотрел несколько форумов по PostgreSQL и обнаружил, что несколько администраторов баз данных забыли свой пароль после установки PostgreSQL.

Пользователь postgres является суперпользователем PostgreSQL, а также пользователем по умолчанию. При установке PostgreSQL вы должны установить пароль пользователя postgres, и если вы забудете пароль, вы не сможете выполнить какую-либо операцию, например создать первую БД или создать первого пользователя БД.

Как восстановить забытый пароль PostgreSQL?

Редактировать файл pg_hba.conf:
Измените строку ниже для MD5 на TRUST

Перезапустите сервер PostgreSQL:

Подключите PostgreSQL:

Изменить пароль пользователя postgres:

Наконец, отмените изменение в файле pg_hba.conf и перезапустите сервер PostgreSQL:

Пожалуйста, посетите другие похожие статьи.

хорошая статья, очень помогла. спасибо

После внесения этого изменения:
host all all 127.0.0.1/32 trust

Мне пришлось использовать следующую команду, чтобы войти в систему без пароля.

psql -h 127.0.0.1 -U postgres

Надеюсь, это поможет

Оставить ответ Отменить ответ

Анвеш Патель
Подписка по электронной почте!
Обо мне!


Я Анвеш Патель, инженер баз данных, сертифицированный Oracle и IBM. Я работаю архитектором баз данных, оптимизатором баз данных, администратором баз данных, разработчиком баз данных. Предоставление лучших статей и решений различных проблем наилучшим образом через мои блоги — моя страсть. У меня более шести лет опыта работы с различными продуктами RDBMS, такими как MSSQL Server, PostgreSQL, MySQL, Greenplum, и в настоящее время я изучаю и исследую технологии BIGData и NoSQL. -- Хайдарабад, Индия.

О DBRND!

dbrnd

Любые взгляды или мнения, представленные в этом блоге, являются личными и принадлежат исключительно владельцу блога и не отражают точку зрения людей, учреждений или организаций, с которыми владелец может или не может быть связан в профессиональном или личном качестве, если не указано иное. .

Не стесняйтесь спорить со мной, не соглашаться со мной или говорить, что я полный чокнутый, в разделе комментариев к каждой записи в блоге, но я оставляю за собой право удалить любой комментарий по любой причине (оскорбительный, непристойный, грубый, или анонимные комментарии) - будьте вежливы.

Содержимое этого веб-сайта защищено авторским правом. Никакая часть этого веб-сайта не может быть скопирована или воспроизведена в любой форме без письменного согласия владельца веб-сайта.

Читайте также: