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


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

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

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

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

9 135

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

    до

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

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

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