Как сбросить пароль psql? [Дубликат]

lori_m сделал действительно хороший вклад, который я построил с помощью таблиц Microsoft Excel и структурированных ссылок.

Сначала создайте столбец в вашей выходной таблице RowID, который содержит номер строки в таблице, а затем используйте это для заполнения значений данных.

=IF( INDIRECT("Table3[RowId]")<=ROWS(Table1)
    ,INDEX(Table1[column1],INDIRECT("Table3[RowId]"))
    ,INDEX(Table2[Column1],INDIRECT("Table3[RowId]")-ROWS(Table1)))

Существует подробное объяснение того, как это работает в моем блоге , поскольку оно слишком долго для включения здесь.

138
задан Ben 24 October 2016 в 02:21
поделиться

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

248
ответ дан Paul 19 August 2018 в 11:16
поделиться
  • 1
    Это в значительной степени. Если это возможно, сделайте это на консоли и отключите машину от сети, пока вы делаете это, чтобы избежать взлома, когда вы работаете. – Philip Couling 1 June 2012 в 12:47
  • 2
    А затем запустите psql? Я все еще получаю запрос пароля, и я этого не знаю – CodyBugstein 25 August 2014 в 00:01
  • 3
    этот ответ НЕ работал для меня, после того, как я сделаю шаг 3, сервис не начнется, я не знаю, может быть, это ОС (W8), это просто не будет. – Scaramouche 12 September 2016 в 01:16
  • 4
    любой для Windows? – Mahesha999 14 November 2016 в 09:02
  • 5
    Имейте в виду, что порядок записей в pg_hba.conf важен. Если вы добавите "local all all trust & quot;" в конце файла он не будет работать так, как вы ожидаете, поскольку предыдущие записи будут сопоставляться первыми. Поэтому поставьте верхнюю часть файла на то, что ожидаете. – Tagar 14 March 2017 в 06:46
  • 6
    – sean.hudson 28 March 2017 в 19:02

Для установки Windows создается пользователь Windows. И «psql» использует этого пользователя для подключения к порту. Если вы измените пароль пользователя PostgreSQL, он не изменит Windows. Командная строка juste ниже работает только в том случае, если у вас есть доступ к командной строке.

Вместо этого вы можете использовать приложение Windows GUI «c: \ Windows \ system32 \ lusrmgr.exe». Это приложение управляет пользователями, создаваемыми Windows. Теперь вы можете изменить пароль.

1
ответ дан cpunky 19 August 2018 в 11:16
поделиться

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

4
ответ дан Daniel 19 August 2018 в 11:16
поделиться

Что я сделал для решения одной и той же проблемы:

Откройте файл 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 и сохранить его.

1
ответ дан Inconnu 19 August 2018 в 11:16
поделиться

Если вы находитесь в окнах, вы можете просто запустить

net user postgres postgres

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

1
ответ дан ivofernandes 19 August 2018 в 11:16
поделиться

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

Этот файл должен содержать строки следующего формата:

hostname: port: database: username: password

(Вы можете добавить комментарий к файлу, скопировав строку выше и перед ней с помощью #.) Каждый из первых четырех поля могут быть буквальным значением или *, что соответствует чему-либо. Будет использовано поле пароля из первой строки, которое соответствует текущим параметрам соединения. (Поэтому сначала ставьте более конкретные записи, когда вы используете подстановочные знаки.) Если запись должна содержать: или \, скройте этот символ. Имя хоста localhost соответствует как TCP (имя хоста localhost), так и сокету Unix домена (pghost empty или каталог сокета по умолчанию), исходящие от локальной машины. На резервном сервере имя базы данных репликации соответствует потоковым соединениям репликации, сделанным на главный сервер. Поле базы данных имеет ограниченную полезность, поскольку пользователи имеют одинаковый пароль для всех баз данных в одном кластере.

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

0
ответ дан rahulnikhare 19 August 2018 в 11:16
поделиться
  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
    
1
ответ дан Ray Hunter 19 August 2018 в 11:16
поделиться
  • 1
    Неужели так сложно дать решение для Windows? Не все используют Linux с sudo. Как я могу сделать это на Windows? – gene b. 15 November 2017 в 16:09

При подключении к 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=#
66
ответ дан SaeX 19 August 2018 в 11:16
поделиться
  • 1
    Спасибо за подсказку в отношении & quot; -h & quot; вариант, помог мне. – Bunkerbewohner 4 March 2014 в 01:23
  • 2
    Необязательно на Windows cmd.exe – Fabien Haddadi 12 July 2018 в 06:13

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

48
ответ дан SaiyanGirl 19 August 2018 в 11:16
поделиться
  • 1
    Он работал над окнами, спасибо – zakaria amine 21 March 2017 в 10:28
  • 2
    Это не работает, потому что PgAdmin все еще запрашивает текущий пароль ... Я возвращаюсь к «trust» и перезапускал PgAdmin. Невозможно выполнить сброс без ввода пароля CURRENT ... – gene b. 15 November 2017 в 16:11
  • 3
    После изменения метода до trust вы можете следовать этому и изменить пароль в cmd – Gilad Green 17 February 2018 в 09:38
Другие вопросы по тегам:

Похожие вопросы: