Я забыл пароль, который я ввел во время установки postgres
Я либо забыл, либо ошибся (во время установки) пароль для пользователя Postgres по умолчанию. Кажется, я не могу запустить его, и я получаю следующую ошибку:
psql: FATAL: password authentication failed for user "hisham"
hisham-agil: hisham$ psql
есть ли способ сбросить пароль или как создать нового пользователя с привилегиями суперпользователя?
Я новичок в Postgres и только что установил его в первый раз. Я пытаюсь использовать его с Rails, и я запускаю Mac OS X Lion.
9 ответов
-
находим файл
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
to
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 попытается подключиться в режиме одноранговой аутентификации.
ниже показан сброс пароля, неудачный вход с одноранговой аутентификацией и успешный вход с использованием 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. Теперь вы можете изменить пароль.
-
редактировать файл
/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
что я сделал, чтобы решить ту же проблему:
открыть файл 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 предполагается, что файл хранится в защищенном каталоге, поэтому проверка специальных разрешений не производится.