Я забыл пароль, который ввел при установке postgres
Я либо забыл, либо опечатал (во время установки) пароль для пользователя по умолчанию в Postgres. Кажется, я не могу его запустить и получаю следующую ошибку:
psql: FATAL: password authentication failed for user "hisham"
hisham-agil: hisham$ psql
Есть ли способ сбросить пароль или как создать нового пользователя с привилегиями суперпользователя?
Я новичок в Postgres и только что установил его впервые. Я пытаюсь использовать его с Rails, и я использую Mac OS X Lion.
19 ответов
найти файл
pg_hba.conf
- он может быть расположен, например, в/etc/postgresql-9.1/pg_hba.conf
,cd /etc/postgresql-9.1/
Поддержите это
cp pg_hba.conf pg_hba.conf-backup
поместите следующую строку (в качестве первой строки без комментариев или в качестве единственной):
local all all trust
перезапустите свой сервер 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
Дополнительная информация о файле 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
Откройте свой cmd и перейдите в
C:\Program Files\PostgreSQL\12\data
Обычно это правильный путь. Вы могли бы хранить его где-нибудь в другом месте. Обратите внимание: если у вас другая версия postgresql, там будет другой номер. Это не имеет значения.Найдите файл pg_hba.conf и скопируйте его в другое место (так у вас будет неизмененная версия этого файла, и вы сможете просмотреть ее после того, как мы внесем некоторые изменения)
Откройте файл pg_hba.conf (не резервную копию, а оригинал)
Найдите несколько строк, которые начинаются с host в нижней части файла:
разместить все все 127.0.0.1/32 md5
разместить все все::1/128 md5
репликация хоста все 127.0.0.1/32 md5
репликация хоста все::1/128 md5
Замените md5 на trust:
хост все все 127.0.0.1/32 доверяют
разместить все все::1/128 траст
репликация хоста все 127.0.0.1/32 доверяют
репликация хоста все::1/128 доверия
Закрыть этот файл
Перейдите в панель поиска в Windows и откройте приложение " Службы". Найдите postgres и перезапустите его. изображение приложения услуг
Напишите cd.. в cmd, а затем cd bin. Ваш путь должен быть
C:\Program Files\PostgreSQL\12\bin
Войти:
psql -U postgres -h localhost
Войти:
ALTER USER postgres with password '<your new password>';
Убедитесь, что вы включили; в конце должно отображаться "ALTER ROLE" как указание на то, что предыдущая строка была выполнена успешноОткройте исходный файл pg_hba.conf и вернитесь с trust на md5.
Перезагрузите сервер с приложением Services, как раньше.
У меня просто была эта проблема в Windows 10, и в моем случае проблема заключалась в том, что я просто запускал psql
и по умолчанию я пытался войти в систему с моим именем пользователя Windows ("Натан"), но не было пользователя PostgreSQL с таким именем, и он мне этого не говорил.
Итак, решение заключалось в том, чтобы запустить psql -U postgres
а не просто psql
, а затем пароль, который я ввел при установке, работал.
Редактировать файл
/etc/postgresql/<version>/main/pg_hba.conf
и найдите следующую строку:local all postgres md5
Отредактируйте строку и измените
md5
в концеtrust
и сохраните файлПерезагрузите сервис postgresql
$ sudo service postgresql reload
Это загрузит файлы конфигурации. Теперь вы можете изменить
postgres
пользователь, войдя вpsql
ракушка$ psql -U postgres
Обновите
postgres
пароль пользователяalter user postgres with password 'secure-passwd-here';
Редактировать файл
/etc/postgresql/<version>/main/pg_hba.conf
и изменитьtrust
вернуться кmd5
и сохраните файлПерезагрузите сервис postgresql
$ sudo service postgresql reload
Убедитесь, что смена пароля работает
$ 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, попробуйте это:
Отредактируйте файл pg_hba.conf
sudo vi /Library/PostgreSQL/9.2/data/pg_hba.conf
Измените метод "md5" для всех пользователей на "доверять" в нижней части файла.
Найдите название услуги
ls / Библиотека / LaunchDaemons
Ищите postgresql
Остановите службу postgresql
sudo launchctl stop com.edb.launchd.postgresql-9.2
Запустите службу postgresql
sudo launchctl start com.edb.launchd.postgresql-9.2
Запустить сеанс psql как postgres
psql -U postgres
(не следует запрашивать пароль из-за настройки "доверия")
Сбросить пароль в сеансе psql, набрав
ИЗМЕНИТЕ ПОЛЬЗОВАТЕЛЯ postgres с паролем "новый-безопасный пароль";
- \q
войти
Отредактируйте файл pg_hba.conf
Снова переключите его на md5
Снова перезапустите службы
Что я сделал, чтобы решить ту же проблему:
Откройте файл 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 .
- Перейдите в папку установки PostgreSQL и найдите pg_hba.conf. Вы найдете его в ..\postgres\data\pg_hba.conf.
- откройте свой блокнот
- Теперь перейдите в оболочку SQL (PSQL) и оставьте все пустым.
- На этот раз он не будет запрашивать пароль, и вы войдете в систему и теперь запустите эту строку:
ALTER USER yourusername WITH SUPERUSER
- перейдите к файлу 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
Он начнет работать.