Я забыл пароль, который я ввел во время установки 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
до
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
как параметр командной строки. Если нет, то сервер будет пытаться подключиться, используя режим проверки подлинности одноранговых.ниже показан сброс пароля, неудачный вход с одноранговой аутентификацией и успешный вход с использованием 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 или каталог сокетов по умолчанию) подключениям, поступающим с локального компьютера. На резервном сервере имя базы данных репликации соответствует подключениям потоковой репликации, выполненным к главному серверу. Поле базы данных имеет ограниченную полезность, так как пользователи имеют один и тот же пароль для всех баз данных в одном кластере.
в системах Unix, разрешения на .pgpass должны запретить любой доступ к миру или группы; добиться этого с помощью команды chmod 0600 ~/.pgpass. Если разрешения менее строгие, чем это, файл будет проигнорирован. В Microsoft Windows предполагается, что файл хранится в безопасном каталоге, поэтому проверка специальных разрешений не выполняется.