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


205

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

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

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

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


1
Я ще не можу коментувати відповіді, тому маю робити це так. Я зробив те, що сказав SaiyanGirl, проте мені все одно потрібно було ввести пароль, який був "postgres" для входу, і я можу скинути пароль
Pascale

Відповіді:


359
  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. розмістіть наступний рядок (як перший коментований рядок, або як єдиний):

Для всіх випадків нижче (локальний і хост), розділ exepct реплікації, якщо у вас немає жодного, його потрібно змінити так, як слід, не повинно бути ніяких аутентифікацій MD5 або Peer.

local  all   all   trust
  1. перезавантажте ваш сервер PostgreSQL (наприклад, на Linux :)

    sudo /etc/init.d/postgresql restart

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

    локальні з'єднання не підтримуються цією збіркою

    ви повинні змінитися

    local all all trust

    до

    host all all 127.0.0.1/32 trust

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

    psql -U postgres

    або

    psql -h 127.0.0.1 -U postgres

    (зауважте, що з першою командою ви не завжди будете пов'язані з локальним хостом)

  3. Скинути пароль ('замініть my_user_name на postgres, оскільки ви скидаєте користувача postgres )

    ALTER USER my_user_name with password 'my_secure_password';

  4. Відновіть старе, pg_hba.confоскільки його дуже небезпечно тримати

    cp pg_hba.conf-backup pg_hba.conf

  5. перезавантажте сервер, щоб запустити сейф pg_hba.conf

    sudo /etc/init.d/postgresql restart

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


9
А потім починати psql? Мені все ще пропонується ввести пароль, і я цього не знаю
CodyBugstein

4
ця відповідь НЕ спрацювала для мене, після того як я виконую крок 3, сервіс не запуститься, я не знаю, можливо це ОС (W8), просто не вийде.
Скарамуш

3
хтось для Windows?
Mahesha999

2
Майте на увазі порядок записів у pg_hba.conf важливо. Якщо ви додасте "локальне все довірене" в кінці файлу, воно не працюватиме так, як ви очікували, оскільки попередні записи будуть узгоджені першими. Тож поставте це у верхній частині файлу, щоб мати те, що ви очікуєте.
Тагар

6
Якщо у вас є вікна з цією помилкою, продовжуйте прокручувати відповідь до @SaiyanGirl. Просто модифікуйте стовпці METHOD з існуючих записів на "довіряти", а потім змініть їх назад, коли закінчите
sean.hudson

99

Підключаючись до постгресів з командного рядка, не забудьте додати -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=#

7
Дякую за пораду щодо варіанту "-h", допомогли мені.
Bunkerbewohner

Без необхідності у Windows cmd.exe
Фабієн Хаддаді

1
Найкраща відповідь для mac
Мухаммед Умар

72

Файл 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


Це не працює, оскільки PgAdmin все ще запитує поточний пароль ... Я скидаю на "довіру" і перезавантажував PgAdmin. Досі не може скинутись, не ввівши СУЧАСНИЙ пароль ...
ген b.

1
Після зміни методу trustви можете дотримуватися цього та змінювати пароль у cmd
Gilad Green

12

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


3
вам ще потрібен пароль після запуску psql
Сніг

8
  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

Чи так важко дати рішення для Windows? Не всі використовують Linux з sudo. Як би це зробити в Windows ??
ген b.

7

Я просто мав цю проблему в Windows 10, і проблема в моєму випадку полягала в тому, що я просто працював, psqlі це було дефолтом у спробі входу в систему з моїм іменем Windows ("Nathan"), але не було користувача PostgreSQL з цим ім'ям, і це мені не казало.

Тож рішення було запустити, psql -U postgresа не просто psql, і тоді пароль, який я ввів при встановленні, спрацював.


5

Додавши відповідь для користувача Windows для останньої версії поштової пошти (> 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 (PSQL) і залиште все порожнім,

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

Цього разу він не запитає пароль, і ви ввійдете в систему,

Тепер запустіть цей рядок, ALTER USER yourusername WITH SUPERUSER

Тепер ви можете залишити оболонку з \ q

Знову перейдіть до файлу pg_hba.conf і знову змініть METHOD з довіри на md5 і збережіть його.

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


1

Для інсталяції Windows створюється користувач Windows. І "psql" використовувати цього користувача для підключення до порту. Якщо ви зміните пароль користувача PostgreSQL, він не змінить Windows. Наведений нижче командний рядок працює лише у тому випадку, якщо у вас є доступ до командного рядка.

Натомість ви можете використовувати додаток GUI для Windows "c: \ Windows \ system32 \ lusrmgr.exe". Ця програма керує користувачами, створеними Windows. Тепер ви можете змінити пароль.


1

Що я зробив, щоб вирішити ту саму проблему:

Відкрийте файл 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, і збережіть його.


0

Якщо ви знаходитесь у Windows, ви можете просто запустити

net user postgres postgres

і увійдіть у postgres з postgres / postgres як користувач / пароль


0

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

Цей файл повинен містити рядки наступного формату:

ім'я хоста: порт: база даних: ім'я користувача: пароль

(Ви можете додати коментар із нагадуванням до файлу, скопіювавши рядок вище та передуючи йому #.) Кожне з перших чотирьох полів може мати буквальне значення або *, що відповідає будь-якому. Буде використано поле пароля з першого рядка, що відповідає поточним параметрам з'єднання. (Отже, поставте спочатку більш конкретні записи, коли ви використовуєте символи.) Якщо запис повинен містити: або \, уникніть цього символу за допомогою. Ім'я хоста localhost відповідає як TCP (ім'я хоста localhost), так і Unix домену socket (pghost порожній або каталог сокетів за замовчуванням), що надходять від локальної машини. На сервері очікування ім'я бази даних реплікації збігається з потоковими з'єднаннями реплікації, виконаними з головним сервером. Поле бази даних має обмежену корисність, оскільки користувачі мають однаковий пароль для всіх баз даних в одному кластері.

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


Це працювало для мене, де шлях розширювався до C: \ Users \ <користувач> \ AppData \ Roaming \ postgresql \ pgpass.conf. Також вимкнення та сервер PostgreSQL, здавалося, допомагають.
geodata

0

Якщо ви запускаєте 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 startctl зупинка com.edb.launchd.postgresql-9.2

  9. Запустіть службу postgresql

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

  11. Почніть сеанс psql як постгреси

  12. psql -U postgres

  13. (не слід запитувати пароль через налаштування 'довіри')

  14. Скидання пароля в сесії psql, набравши текст

  15. ПОЛІ ПОТРІБНИК postgres з паролем 'secure-new-password';

  16. \ q
  17. увійти

  18. Відредагуйте файл pg_hba.conf

  19. Переключити його назад на "md5"

  20. Перезавантажте послуги знову


-1

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.