Изменить пароль postgresql windows

Обновлено: 07.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 учетную запись, которая не требует пароля, поэтому эта проблема исчезнет .

Как изменить пароль для пользователя PostgreSQL?

для пароля меньше логина:

чтобы сбросить пароль, если вы забыли:

затем бросить psql :

если это не помогает, настройте проверку подлинности.

редактировать /etc/postgresql/9.1/main/pg_hba.conf (путь будет отличаться) и меняться:

вы можете и должны зашифровать пароль пользователя:

Я считаю, что лучший способ изменить пароль, просто использовать:

в консоли Postgres.

изменить пароль с помощью командной строки в Ubuntu, используйте:

перейдите в конфигурацию Postgresql и отредактируйте pg_hba.conf

sudo vim /etc/postgresql/9.3/main/pg_hba.conf

затем измените эту строку :

затем перезапустите службу PostgreSQL с помощью команды SUDO, затем

теперь вы будете введены и увидите терминал Postgresql

и введите новый пароль Пользователь Postgres по умолчанию, после успешной смены пароля снова перейдите в pg_hba.conf и вернуть изменение в "md5"

теперь вы войдете в систему как

С новым паролем.

Дайте мне знать, если вы обнаружите какие-либо проблемы в нем.

Это был первый результат в Google, когда я искал как переименовать пользователя, так:

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

переместить пользователя в другую группу

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

Не забудьте изменить это обратно на пароль или md5

запросить новый пароль postgres пользователь (не показывая его в команде):

для моего случая на Ubuntu 14.04 установлен с postgres 10.3. Мне нужно выполнить следующие шаги

  • su - postgres к postgres
  • psql для входа в оболочку postgres
  • \password введите пароль
  • \q чтобы выйти из сеанса оболочки

затем вы переключаетесь обратно в root, выполнив exit и настроить свой pg_hba.conf (мое-в /etc/postgresql/10/main/pg_hba.conf ), убедившись, что у вас есть следующие линия

local all postgres md5

введите новый пароль для этого пользователя, а затем подтвердите его. Если вы не помните пароль, и вы хотите его изменить, вы можете войти в систему как postgres, а затем использовать это:

  • Отредактируйте pg_hba.conf в каталоге данных кластера БД, к которому вы пытаетесь подключиться.
    • Папку каталога данных можно найти, проверив командную строку systemd, которую легко получить с помощью systemctl status postgresql@VERSION-DB_CLUSTER . Замените VERSION своей версией PSQL, а DB_CLUSTER - именем вашего кластера базы данных. Это может быть основным, если он был создан автоматически, например. postgresql@13-main . В качестве альтернативы мой bash предоставил автозаполнение после ввода postgresql@ , так что вы можете попробовать это или поискать службы postgresql в списке всех служб ( systemctl -a ). После того, как вы получите вывод состояния, найдите вторую командную строку после CGroup, которая должна быть довольно длинной, и начните с /usr/lib/postgresql/13/bin/postgres или аналогичного (в зависимости от версии, дистрибутива и метода установки). Вы ищете каталог после -D , например /var/lib/postgresql/13/main .

    У меня была Windows (Server 2019; PG 10), поэтому соединения типа local ( pg_hba.conf : local all all peer ) не поддерживаются. Следующее должно работать как в системах Windows, так и в Unix:

    1. резервное копирование pg_hba.conf на pg_hba.orig.conf например
    2. создайте pg_hba.conf только с этим: host all all 127.0.0.1/32 trust
    3. перезапустить pg (сервис)
    4. выполнить psql -U postgres -h 127.0.0.1
    5. введите (в консоли pgctl) alter user postgres with password 'SomePass';
    6. восстановить pg_hba.conf из 1. выше

    Если используется метод аутентификации «одноранговый», имя пользователя / пароль операционной системы клиента должны совпадать с именем пользователя и паролем базы данных. В этом случае установите одинаковые пароли для пользователя Linux postgres и пользователя БД postgres.

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

    Если вместо этого вы больше сосредотачиваетесь на автоматизации настройки базы данных для вашей локальной разработки или CI и т. Д .

    Например, вы можете использовать такую ​​простую комбинацию.

    (a) Создайте фиктивного суперпользователя через jenkins с помощью команды, подобной этой:

    Это создаст суперпользователя с именем эксперимент001 в вашей базе данных postgres.

    (b) Дайте этому пользователю пароль, выполнив НЕИнтерактивную команду SQL.

    Postgres, вероятно, лучшая база данных для инструментов командной строки (неинтерактивных). Создание пользователей, запуск SQL, резервное копирование базы данных и т. Д. В целом с postgres все довольно просто, и в целом довольно тривиально интегрировать это в сценарии установки разработки или в автоматизированную конфигурацию CI.

    И полностью автоматизированный способ с помощью bash и expect (в этом примере мы предоставляем новому администратору postgres только что подготовленный postgres pw как на уровне ОС, так и на уровне времени выполнения postgres)

    Подобно другим ответам по синтаксису, но следует знать, что вы также можете передать md5 пароля, чтобы вы не передавали пароль в виде простого текста.

    Вот несколько сценариев непредвиденных последствий изменения пароля пользователя в виде обычного текста.

    1. Если у вас нет SSL и вы изменяете удаленно, вы передаете пароль в виде обычного текста по сети.
    2. Если ваша конфигурация ведения журнала настроена на регистрацию заявлений DDL log_statement = ddl или выше, то ваш простой текстовый пароль будет отображаться в журналах ошибок.
      1. Если вы не защищаете эти журналы, это проблема.
      2. Если вы соберете эти журналы / ETL и отобразите их там, где у других есть доступ, они могут увидеть этот пароль и т. д.
      3. Если вы разрешите пользователю управлять своим паролем, он неосознанно откроет пароль администратору или сотруднику нижнего уровня, которому поручено просматривать журналы.

      С учетом вышесказанного, вот как мы можем изменить пароль пользователя, построив md5 пароля.

        Postgres, когда хеширует пароль как md5, объединяет пароль с именем пользователя, а затем добавляет текст «md5» к результирующему хешу.

      пример: "md5" + md5 (пароль + имя пользователя)

      • В PowerShell:
      • Итак, наконец, наша команда ALTER USER будет выглядеть так

      Пароль всегда хранится в зашифрованном виде в системных каталогах. Ключевое слово ENCRYPTED не действует, но допускается для обратной совместимости. Метод шифрования определяется параметром конфигурации password_encryption. Если представленная строка пароля уже находится в формате с шифрованием MD5 или SCRAM, то она сохраняется как есть, независимо от password_encryption (поскольку система не может расшифровать указанную зашифрованную строку пароля, чтобы зашифровать ее в другом формате). Это позволяет перезагружать зашифрованные пароли во время дампа / восстановления.

      TL; DR:

      Во многих системах учетная запись пользователя часто содержит точку или какую-то точку (пользователь: john.smith, horise.johnson). В этих случаях необходимо будет внести изменения в принятый выше ответ. Изменение требует, чтобы имя пользователя было заключено в двойные кавычки.

      Рационально:

      Postgres весьма разборчив в том, когда использовать «двойные кавычки», а когда «одинарные кавычки». Обычно при вводе строки вы используете одинарные кавычки.

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

      В моем случае на Ubuntu 14.04, установленной с postgres 10.3. Мне нужно выполнить следующие шаги

      • su - postgres для переключения пользователя на postgres
      • psql для входа в оболочку postgres
      • \password затем введите свой пароль
      • \q для выхода из сеанса оболочки

      Затем вы переключаетесь обратно на root, выполняя exit и настраиваете свой pg_hba.conf (у меня на /etc/postgresql/10/main/pg_hba.conf ), убедившись, что у вас есть следующая строка

      local all postgres md5

      Если вы на windows.

      Откройте файл pg_hba.conf и измените его с md5 на peer

      Откройте cmd, введите psql postgres postgres

      Затем введите \password , чтобы получить запрос на ввод нового пароля.

      См. этот средний пост для получения дополнительной информации и подробных шагов.

      Конфигурация, которая у меня есть на моем сервере, была сильно изменена, и мне удалось изменить пароль только после того, как я установил аутентификацию trust в pg_hba.conf файл:

      Не забудьте снова изменить его на пароль или md5

      Чтобы запросить новый пароль для пользователя postgres (не показывая его в команде):

      Это был первый результат в Google, когда я искал, как переименовать пользователя, поэтому:

      Пара других команд, полезных для управления пользователями:

      Переместить пользователя в другую группу

      Перейдите в свою конфигурацию Postgresql и отредактируйте pg_hba.conf

      sudo vim /etc/postgresql/9.3/main/pg_hba.conf

      Затем измените эту строку:

      Затем перезапустите службу PostgreSQL с помощью команды SUDO, затем

      Вы войдете и увидите терминал Postgresql

      И введите НОВЫЙ пароль для пользователя Postgres по умолчанию. После успешного изменения пароля снова перейдите в pg_hba.conf и верните изменение на «md5»

      Теперь вы войдете в систему как

      С новым паролем.

      Дайте мне знать, если вы все найдете в нем какие-либо проблемы.

      Чтобы изменить пароль

      Теперь введите новый пароль и подтвердите

      Затем \q для выхода

      Чтобы изменить пароль с помощью командной строки Linux, используйте:

      Я считаю, что лучший способ изменить пароль - это просто использовать:

      В консоли Postgres.

      Согласно ALTER USER документации:

      Я либо забыл, либо ошибочно (во время установки) пароль для пользователя 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-> Ролевые привилегии.

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