Я забыл пароль, который ввел при установке postgres

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

psql: FATAL:  password authentication failed for user "hisham"
hisham-agil: hisham$ psql 

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

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

19 ответов

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

    cd /etc/postgresql-9.1/

  2. Поддержите это

    cp pg_hba.conf pg_hba.conf-backup

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

    local all all trust

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

    sudo /etc/init.d/postgresql restart

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

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

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

    local all all trust

    в

    host all all 127.0.0.1/32 trust

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

    psql -U postgres

    или же

    psql -h 127.0.0.1 -U postgres

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

  6. Сброс пароля

    ALTER USER my_user_name with password 'my_secure_password';

  7. Восстановить старое pg_hba.conf так как очень опасно держаться

    cp pg_hba.conf-backup pg_hba.conf

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

    sudo /etc/init.d/postgresql restart

Дополнительная информация о файле pg_hba: http://www.postgresql.org/docs/9.1/static/auth-pg-hba-conf.html

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

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

# sudo -u postgres psql
could not change directory to "/root"
psql (9.1.11)
Type "help" for help.

postgres=# \password
Enter new password:
Enter it again:
postgres=# \q

В противном случае:

# psql -U postgres -W
Password for user postgres:
psql: FATAL:  Peer authentication failed for user "postgres"

Работать с -h localhost:

# psql -U postgres -W  -h localhost
Password for user postgres:
psql (9.1.11)
SSL connection (cipher: DHE-RSA-AES256-SHA, bits: 256)
Type "help" for help.

postgres=#

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

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# IPv4 local connections:
host    all             all             127.0.0.1/32            trust
# IPv6 local connections:
host    all             all             ::1/128                 trust

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

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

Это ссылка, о которой я говорю: https://qsartoolbox.org/content/documents/ResettingPostgreSQLPassword.pdf

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

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

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

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

    разместить все все 127.0.0.1/32 md5

    разместить все все::1/128 md5

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

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

  5. Замените md5 на trust:

    хост все все 127.0.0.1/32 доверяют

    разместить все все::1/128 траст

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

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

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

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

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

  9. Войти: psql -U postgres -h localhost

  10. Войти: ALTER USER postgres with password '<your new password>';Убедитесь, что вы включили; в конце должно отображаться "ALTER ROLE" как указание на то, что предыдущая строка была выполнена успешно

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

  12. Перезагрузите сервер с приложением Services, как раньше.

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

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

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

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

  3. Перезагрузите сервис postgresql

    $ sudo service postgresql reload
    
  4. Это загрузит файлы конфигурации. Теперь вы можете изменить postgres пользователь, войдя в psql ракушка

    $ psql -U postgres
    
  5. Обновите postgres пароль пользователя

    alter user postgres with password 'secure-passwd-here';
    
  6. Редактировать файл /etc/postgresql/<version>/main/pg_hba.conf и изменить trust вернуться к md5 и сохраните файл

  7. Перезагрузите сервис postgresql

    $ sudo service postgresql reload
    
  8. Убедитесь, что смена пароля работает

    $ psql -U postgres -W
    

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

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

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

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

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# IPv4 local connections: 
host    all             all             127.0.0.1/32            md5
# IPv6 local connections:
host    all             all             ::1/128                 md5
#..

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

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# IPv4 local connections: 
host    all             all             127.0.0.1/32            trust
# IPv6 local connections:
host    all             all             ::1/128                 trust
# ...

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

Server [localhost]:
Database [postgres]:
Port [8000]:
Username [postgres]: 

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

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

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

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

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

Если вы работаете в PostgreSQL на Mac OS, попробуйте это:

  1. Отредактируйте файл pg_hba.conf

  2. sudo vi /Library/PostgreSQL/9.2/data/pg_hba.conf

  3. Измените метод "md5" для всех пользователей на "доверять" в нижней части файла.

  4. Найдите название услуги

  5. ls / Библиотека / LaunchDaemons

  6. Ищите postgresql

  7. Остановите службу postgresql

  8. sudo launchctl stop com.edb.launchd.postgresql-9.2

  9. Запустите службу postgresql

  10. sudo launchctl start com.edb.launchd.postgresql-9.2

  11. Запустить сеанс psql как postgres

  12. psql -U postgres

  13. (не следует запрашивать пароль из-за настройки "доверия")

  14. Сбросить пароль в сеансе psql, набрав

  15. ИЗМЕНИТЕ ПОЛЬЗОВАТЕЛЯ postgres с паролем "новый-безопасный пароль";

  16. \q
  17. войти

  18. Отредактируйте файл pg_hba.conf

  19. Снова переключите его на md5

  20. Снова перезапустите службы

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

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

sudo gedit /etc/postgresql/9.5/main/pg_hba.conf

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

host  all   all  127.0.0.1/32  trust

ниже -

# Database administrative login by Unix domain socket

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

psql -U postgres

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

ALTER USER [your prefered user name] with password '[desired password]';

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

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

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

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

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

net user postgres postgres

и войдите в систему postgres с помощью postgres/postgres в качестве пользователя / пароля

      sudo -u postgres psql

ALTER USER user_name WITH PASSWORD 'new_password';

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

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

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

(Вы можете добавить комментарий напоминания в файл, скопировав строку выше и поставив перед ней символ #.) Каждое из первых четырех полей может быть буквальным значением или *, что соответствует чему угодно. Будет использовано поле пароля из первой строки, соответствующее текущим параметрам соединения. (Поэтому при использовании подстановочных знаков ставьте сначала более конкретные записи.) Если запись должна содержать: или \, экранируйте этот символ с помощью. Имя хоста localhost совпадает с соединениями TCP (имя хоста localhost) и сокета домена Unix (pghost empty или каталог сокета по умолчанию), поступающими с локального компьютера. На резервном сервере имя базы данных репликации соответствует подключению потоковой репликации к главному серверу. Поле базы данных имеет ограниченную полезность, поскольку пользователи имеют один и тот же пароль для всех баз данных в одном кластере.

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

Выполните шаг 1 для лучшего ответа.

Вот мое дополнение, если вы используете операционную систему Windows. Выполните только шаг 1, а затем откройте pgAdmin или postgres в Интернете и щелкните файл в верхней части навигации. Нажмите на сброс макета и, наконец, перезагрузите приложение. Какой бы пароль вы ни поставили, он должен работать. Я использовал 1234 .

  1. Перейдите в папку установки PostgreSQL и найдите pg_hba.conf. Вы найдете его в ..\postgres\data\pg_hba.conf.
  2. откройте свой блокнот
  3. Теперь перейдите в оболочку SQL (PSQL) и оставьте все пустым.
  4. На этот раз он не будет запрашивать пароль, и вы войдете в систему и теперь запустите эту строку:ALTER USER yourusername WITH SUPERUSER
  5. перейдите к файлу pg_hba.conf и снова измените МЕТОД с доверия на md5 и сохраните его, который был открыт в блокноте.

мне не удалось найти файлpg_hba.confв папкеC:\Program Files\PostgreSQL\14\data, потому что нет папкиdataсовсем.

Я решил проблему, создав нового пользователя с помощью pgAdmin и предоставив ему права суперсистемного администратора.

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

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

# IPv4 local connections: host all all 127.0.0.1/32 trust

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

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

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

Добавьте строку ниже в свой файл pg_hba.conf. который будет присутствовать в каталоге установки postgreshostnossl all all 0.0.0.0/0 trust

Он начнет работать.

Другие вопросы по тегам