Psql требует пароль windows

Обновлено: 03.07.2024

Сегодня утром я пытался подключить базу данных PostgreSQL на моем рабочем столе Windows 7 Professional.

Значением по умолчанию является «postgres», но, разумеется, я забыл, какой пароль я использовал при первоначальной установке.

«Произошла системная ошибка 5. Доступ запрещен.»

системная ошибка. Как мне избежать этой ошибки и сбросить пароль?

(Примечание: не многое из этого относится к читателям, использующим PostgreSQL 9.2 или более поздней версии из установщиков EDB, которые теперь имеют значительно упрощенную установку по умолчанию с использованием NETWORK SERVICE , хотя вы все равно можете настраивать другие учетные записи) .

Вы сбросили (или попытались сбросить) пароль учетной записи службы. PostgreSQL не будет работать от имени администратора по соображениям безопасности, и установщик обычно устанавливает его с учетной записью «postgres» в PostgreSQL 9.1 и более ранних версиях 1 . В Windows вы не можете запустить службу как пользователь, не сохранив пароль пользователя в реестре, так что это делает установщик.

К счастью, я думаю, что другая ошибка помешала вам сделать это. Похоже, что вы, вероятно, запускаете командную строку без использования «Запуск от имени администратора» для непривилегированной учетной записи пользователя Windows или компьютера с UAC, поэтому он не запускается с разрешениями доступа, необходимыми для изменения пароля для postgres пользователя.

Прежде чем пытаться изменить этот пароль, убедитесь, что это действительно то, что вы хотите сделать. Какую проблему вы пытаетесь решить здесь? Вы пытаетесь установить обновление базы данных или что-то еще, запрашивающее пароль для postgres пользователя Windows?

Скорее всего, вы просто пытаетесь войти в базу данных. Для этого вы используете (к сожалению, совершенно не связанный) пароль, хранящийся в самой базе данных. Так как вы потеряли / забыли его, вам придется сбросить его:

  • Найди свой pg_hba.conf , обычно в C:\Program Files\PostgreSQL\9.1\data\pg_hba.conf
  • Если необходимо, установите разрешения для него, чтобы вы могли изменить его; Ваша учетная запись пользователя может быть не в состоянии сделать это, пока вы не используете вкладку безопасности в диалоговом окне свойств, чтобы предоставить себе это право с помощью переопределения администратора. Кроме того, найдите notepad / notepad ++ в меню «Пуск», щелкните правой кнопкой мыши, выберите «Запуск от имени администратора», затем используйте File-> Open, чтобы открыть pg_hba.conf этот путь.

Отредактируйте его, чтобы установить строку "host" для пользователя "postgres" на хосте "127.0.0.1/32" в значение "trust". Вы можете добавить строку, если ее там нет; просто вставьте:

Перезапустите службу PostgreSQL из панели управления службами (start-> run-> services.msc )

1. 9.2 теперь использует NETWORKSERVICE учетную запись, которая не требует пароля, поэтому эта проблема исчезнет .

Забыли пароль учетной записи postgres в PostgreSQL? Выполнить сброс не сложно. Для этого необходимо выполнить пару манипуляций.

1. Правим файл pg_hba.conf

Находим файл в папке Data директории установки PostgreSQL. В Windows путь выглядит примерно так c:\Program Files\PostgreSQL\9.2.4-1.1C\data\

В этом файле нужно найти такие строчки

Меняем md5 на trust.

2. Удаляем файл pgpass.conf

В Windows этот файл находится в c:\Users\Administrator\AppData\Roaming\postgresql\

Здесь хранится старый пароль от PostgreSQL. Простое изменение хранимого здесь пароля мне не помогло. Поэтому я его просто удалил.

3. Меняем пароль в pgAdmin

Запускаем pgAdmin и нам предлагается ввести пароль. Если отметить галочку сохранить, то пароль будет сохранен в pgpass.conf и больше программой запрашиваться не будет.

Чтобы обеспечить безопасность использования паролей необходимо вернуть алгоритм шифрования md5. Для этого в файле pg_hba.conf параметр trust обратно меняем на md5.

Для подключения на локальном компьютере к PostgreSQL с помощью psql, pg_dump в локальных адресах IPv4 127.0.0.1/32 и IPv6 ::1/128 значение trust нужно оставить.

5 thoughts on “ Сброс пароля в PostgreSQL ”

Ты не сменил и не сбросил пароль. Ты отключил все механизмы защиты, поэтому он теперь пускает не с новым паролем, а вообще с ЛЮБЫМ. Строка trust как раз и отключает проверку пароля. А файл pgpass.conf нужен для того что бы утилитка pgAdmin могла туда сохранить пароль и не спрашивать его больше. Именно поэтому он храниться в твоем профиле, что бы никто другой не мог туда зяглянуть.
Пароль пользователя меняется командой ALTER USER user_name WITH PASSWORD 'new_password';

Удали статью, а то кучи начинающих "АДМИНОВ" понаоткрывают голую жопу по твоим советам.

Прежде чем писать такой комментарий

Строка trust как раз и отключает проверку пароля.

..внимательней читайте статью, там написано

параметр trust обратно меняем на md5

Про файл pgpass.conf тоже в статье сказано.
Так что с голой жопой останутся только такие же невнимательные как ты.

Глохни, петух. Как я смогу изменить пароль, если не могу на сервер зайти без пароля, придурок!

Тебе выше написали, что параметры доступа в pg_hba.conf изменены так, чтобы пустить потом тебя БЕЗ пароля с localhost. Да, когда меняете этот файл, перещапускать БД не забывайте.
Потом влетай в консоль psql -Upostgres -W -hlocalhost c пустым паролем, и меняй себе его наздоровье.
Затем возверни настройки обратно в md5 и перезапусти БД.

Виндовозники привыкли мышкой водить. Нет чтоб в терминале просто и со вкусом ALTER USER user_name WITH PASSWORD 'new_password';

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

В любом случае существует ли пароль reset или как создать нового пользователя с привилегиями суперпользователя?

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

Сделайте резервную копию

cp pg_hba.conf pg_hba.conf-backup

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

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

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

sudo /etc/init.d/postgresql restart

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

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

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

local all all trust

host all all 127.0.0.1/32 trust

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

psql -U postgres

psql -h 127.0.0.1 -U postgres

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

ALTER USER my_user_name with password 'my_secure_password';

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

cp pg_hba.conf-backup pg_hba.conf

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

sudo /etc/init.d/postgresql restart

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

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

Работа с -h localhost :

Затем, используя pgAdmin III, я вошел в систему, не используя пароль и сменив пароль пользователя postgres' , перейдя в File -> Change Password

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

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

Отредактируйте строку и измените md5 в конце на trust и сохраните файл

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

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

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

Отредактируйте файл /etc/postgresql/<version>/main/pg_hba.conf и измените trust на md5 и сохраните файл

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

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

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

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

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

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

Теперь перейдите в SQL Shell (PSQL) и оставьте все пустым,

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

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

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

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

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

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

Что я сделал для решения одной и той же проблемы:

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

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

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

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

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

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

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

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

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

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

имя хоста: порт: база данных: имя пользователя: пароль

В системах Unix разрешения на .pgpass должны запрещать любой доступ к миру или группе; это достигается командой chmod 0600

/.pgpass. Если разрешения менее строгие, чем этот, файл будет проигнорирован. В Microsoft Windows предполагается, что файл хранится в безопасном каталоге, поэтому специальная проверка прав доступа не производится.

Вот что у меня сработало на windows:

Отредактируйте файл pg_hba.conf, расположенный в C:\Program Files\PostgreSQL\9.3\data.

Измените метод с доверия на md5 и перезапустите службу postgres в Windows.

После этого вы можете войти, используя postgres, без пароля, используя pgadmin. Вы можете изменить пароль, используя File-> Изменить пароль.

Если пользователь postgres не имеет привилегий суперпользователя, вы не можете изменить пароль. В этом случае войдите в систему с другим пользователем (pgsql) с правами суперпользователя и предоставьте привилегии другим пользователям, щелкнув правой кнопкой мыши по пользователям и выбрав properties-> Ролевые привилегии.

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

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

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

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

cp pg_hba.conf pg_hba.conf-backup

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

local all all trust

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

sudo /etc/init.d/postgresql restart

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

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

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

local all all trust

host all all 127.0.0.1/32 trust

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

psql -U postgres

psql -h 127.0.0.1 -U postgres

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

ALTER USER my_user_name with password 'my_secure_password';

восстановить старую pg_hba.conf Как это очень опасно сохранить вокруг

cp pg_hba.conf-backup pg_hba.conf

перезагрузить сервер, в приказываю бежать с сейфом pg_hba.conf

sudo /etc/init.d/postgresql restart

при подключении к Postgres из командной строки, Не забудьте добавить -h localhost как параметр командной строки. Если нет, postgres попытается подключиться в режиме одноранговой аутентификации.

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

работает с -h localhost :

The pg_hba.conf ( C:\Program Files\PostgreSQL.3\data ) файл изменился с тех пор, как были даны эти ответы. Что сработало для меня в Windows, это открыть файл и изменить METHOD С md5 до trust :

затем, используя pgAdmin III, я вошел в систему без пароля и изменил пользователя postgres' пароль, перейдя к File -> Change Password

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

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

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

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

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

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

изменить строку и изменить md5 в конце trust и сохраните файл

перезагрузка postgresql сервис

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

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

редактировать файл /etc/postgresql/<version>/main/pg_hba.conf , и trust на md5 и сохраните файл

перезагрузка postgresql сервис

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

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

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

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

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

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

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

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

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

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

имя хоста: порт: база данных: имя пользователя: пароль

в системах Unix, разрешения на .pgpass должны запретить любой доступ к миру или группы; добиться этого с помощью команды chmod 0600

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

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

В любом случае существует ли пароль reset или как создать нового пользователя с привилегиями суперпользователя?

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

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

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

cp pg_hba.conf pg_hba.conf-backup

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

local all all trust

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

sudo /etc/init.d/postgresql restart

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

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

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

local all all trust

host all all 127.0.0.1/32 trust

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

psql -U postgres

psql -h 127.0.0.1 -U postgres

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

ALTER USER my_user_name with password 'my_secure_password';

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

cp pg_hba.conf-backup pg_hba.conf

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

sudo /etc/init.d/postgresql restart

Вот и все. Если возможно, сделайте это на консоли и отключите компьютер от сети, пока вы делаете это, чтобы никто не взломал его во время работы. А потом начать psql ? Мне все еще предлагают ввести пароль, и я не знаю его Работал отлично, спасибо! Примечание: держите pgAdmin закрытым, следуя этим шагам. этот ответ НЕ работал для меня, после того, как я выполню шаг 3, служба не запустится, я не знаю, может быть, это ОС (W8), она просто не будет. @ Mahesha999: то же самое для Windows. За исключением того, что вам нужен net stop . и net start . или панель управления для остановки и запуска службы (и вы не можете использовать local соединения в Windows) эта команда не работает у меня локально все доверяют Помните, что порядок записей в pg_hba.conf важен. Если вы добавите «local all all trust» в конец файла, он не будет работать так, как вы ожидаете, так как предыдущие записи будут сопоставляться первыми. Поэтому поместите это в начало файла, чтобы получить то, что вы ожидаете. Если вы находитесь в Windows с этой ошибкой, прокрутите до ответа @SaiyanGirl. Просто измените столбцы МЕТОД существующих записей на «доверие», а затем измените его обратно, когда закончите. psql -U postgres просто войдет в систему, если нет, то вы можете использовать пароль, который вы указали во время установки. Мне также пришлось добавить local all postgres trust в /etc/postgresql/9.5/mainpg_hba.conf . Вы должны прокомментировать все остальные строки или заменить все md5 на trust .

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

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

Работа с -h localhost :

Затем, используя pgAdmin III, я вошел в систему, не используя пароль и сменив пароль пользователя postgres' , перейдя в File -> Change Password

Это не работает, потому что PgAdmin по-прежнему запрашивает текущий пароль . Я сбросил на «доверие» и перезапустил PgAdmin. Все еще не могу сбросить без ввода в ТЕКУЩИЙ пароль . Как только вы измените метод на trust вы можете следовать этому и изменить пароль в cmd

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

Что я сделал для решения одной и той же проблемы:

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

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

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

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

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

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

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

Отредактируйте строку и измените md5 в конце на trust и сохраните файл

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

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

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

Отредактируйте файл /etc/postgresql/<version>/main/pg_hba.conf и измените trust на md5 и сохраните файл

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

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

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

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

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

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

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

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

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

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

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

Теперь перейдите в SQL Shell (PSQL) и оставьте все пустым,

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

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

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

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

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

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

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

имя хоста: порт: база данных: имя пользователя: пароль

В системах Unix разрешения на .pgpass должны запрещать любой доступ к миру или группе; это достигается командой chmod 0600

/.pgpass. Если разрешения менее строгие, чем этот, файл будет проигнорирован. В Microsoft Windows предполагается, что файл хранится в безопасном каталоге, поэтому специальная проверка прав доступа не производится.

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