Как узнать пароль postgresql linux
Обновлено: 21.11.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 (пользователя-администратора) 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!
Любые взгляды или мнения, представленные в этом блоге, являются личными и принадлежат исключительно владельцу блога и не отражают точку зрения людей, учреждений или организаций, с которыми владелец может или не может быть связан в профессиональном или личном качестве, если не указано иное. .
Не стесняйтесь спорить со мной, не соглашаться со мной или говорить, что я полный чокнутый, в разделе комментариев к каждой записи в блоге, но я оставляю за собой право удалить любой комментарий по любой причине (оскорбительный, непристойный, грубый, или анонимные комментарии) - будьте вежливы.
Содержимое этого веб-сайта защищено авторским правом. Никакая часть этого веб-сайта не может быть скопирована или воспроизведена в любой форме без письменного согласия владельца веб-сайта.
Читайте также: