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

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

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

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

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

9 ответов


  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

    to

    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 попытается подключиться в режиме одноранговой аутентификации.

ниже показан сброс пароля, неудачный вход с одноранговой аутентификацией и успешный вход с использованием 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=#

The pg_hba.conf (C:\Program Files\PostgreSQL.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


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


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

net user postgres postgres

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


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

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


  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
    

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

открыть файл 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, и сохраните ее.


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

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

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

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

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