Как изменить пароль пользователя PostgreSQL?

Как изменить пароль для пользователя PostgreSQL?

Ответ 1

Для пароля меньше логин:

sudo -u user_name psql db_name

Чтобы сбросить пароль, если вы забыли:

ALTER USER user_name WITH PASSWORD 'new_password';

Ответ 2

Затем введите:

$ sudo -u postgres psql

Затем:

\password postgres

Затем выйти из psql:

\q

Если это не работает, перенастройте аутентификацию.

Отредактируйте /etc/postgresql/9.1/main/pg_hba.conf (путь будет отличаться) и измените:

    local   all             all                                     peer

чтобы:

    local   all             all                                     md5

Затем перезапустите сервер:

$ sudo service postgresql restart

Ответ 3

Вы можете и должны иметь пароль пользователя зашифрован:

ALTER USER username WITH ENCRYPTED PASSWORD 'password';

Ответ 4

Я считаю, что лучший способ изменить пароль - это просто:

\password

в консоли Postgres.

Источник:

Следует соблюдать осторожность при указании незашифрованного пароля с помощью этой команды. Пароль будет передан на сервер в cleartext, и он также может быть зарегистрирован в истории команд клиента или журнал сервера. psql содержит команду\пароль, которая может быть использована для изменения пароля роли без раскрытия пароля открытого текста.

из https://www.postgresql.org/docs/9.0/static/sql-alterrole.html.

Ответ 5

Чтобы изменить пароль с помощью командной строки Linux, используйте:

sudo -u <user_name> psql -c "ALTER USER <user_name> PASSWORD '<new_password>';"

Ответ 6

Перейдите в свой Postgresql Config и Edit pg_hba.conf

sudo vim /etc/postgresql/9.3/main/pg_hba.conf

Затем измените эту строку:

Database administrative login by Unix domain socket
local      all              postgres                                md5

to:

Database administrative login by Unix domain socket
local   all             postgres                                peer

затем перезапустите службу PostgreSQL с помощью команды SUDO, затем

psql -U postgres

Теперь вы будете введены и увидите столбец Postgresql

затем введите

\password

и введите новый пароль для пользователя Postgres по умолчанию. После успешного изменения пароля снова перейдите к pg_hba.conf и верните изменение на "md5"

теперь вы войдете в систему как

psql -U postgres

с новым паролем.

Сообщите мне, если вы все найдете в нем какие-либо проблемы.

Ответ 7

Сменить пароль

 sudo -u postgres psql

затем

\password postgres

Теперь введите новый пароль и подтвердите

затем \q для выхода

Ответ 8

Чтобы запросить новый пароль для пользователя postgres (не показывая его в команде):

sudo -u postgres psql -c "\password"

Ответ 9

Конфигурация, которую я получил на своем сервере, была сильно изменена, и мне удалось изменить пароль только после того, как я установил доверительную аутентификацию в pg_hba.conf:

local   all   all   trust

Не забудьте изменить это обратно на пароль или md5

Ответ 10

Это был первый результат в google, когда я смотрел, как переименовать пользователя, так:

ALTER USER <username> WITH PASSWORD '<new_password>';  -- change password
ALTER USER <old_username> RENAME TO <new_username>;    -- rename user

Несколько других команд полезны для управления пользователями:

CREATE USER <username> PASSWORD '<password>' IN GROUP <group>;
DROP USER <username>;

Переместить пользователя в другую группу

ALTER GROUP <old_group> DROP USER <username>;
ALTER GROUP <new_group> ADD USER <username>;

Ответ 11

Для моего случая на Ubuntu 14.04 установлен Postgres 10.3. Мне нужно выполнить следующие шаги

  • su - postgres для переключения пользователя на postgres
  • psql для входа в оболочку Postgres
  • \password затем введите свой пароль
  • \q чтобы выйти из сеанса оболочки
  • Затем вы переключаетесь обратно в root, выполняя exit и конфигурируете свой pg_hba.conf (мой находится в /etc/postgresql/10/main/pg_hba.conf), убедившись, что у вас есть следующая строка

    local all postgres md5

  • Перезапустите службу postgres с помощью service postgresql restart
  • Теперь переключитесь на postgres пользователя и введите Postgres оболочки снова. Он подскажет вам пароль.

Ответ 12

использовать этот:

\password

введите новый пароль, который вы хотите для этого пользователя, а затем подтвердите его. Если вы не помните пароль и хотите изменить его, вы можете войти в систему как postgres, а затем использовать это:

ALTER USER 'the username' WITH PASSWORD 'the new password';

Ответ 13

Подобно другим ответам в синтаксисе, но следует знать, что вы также можете передать md5 пароля, чтобы не передавать простой текстовый пароль.

Вот несколько сценариев непреднамеренных последствий изменения пароля пользователя в виде обычного текста.

  1. Если у вас нет SSL и вы изменяете удаленно, вы передаете простой текстовый пароль по сети.
  2. Если для вашей конфигурации ведения журнала задано ведение отчетов DDL log_statement = ddl или более поздней версии, то ваш простой текстовый пароль будет отображаться в журналах ошибок.
    1. Если вы не защищаете эти журналы, это проблема.
    2. Если вы соберете эти журналы /ETL и покажете их там, где другие имеют доступ, они могут в конечном итоге увидеть этот пароль и т.д.
    3. Если вы позволяете пользователю управлять своим паролем, он неосознанно раскрывает пароль администратору или сотруднику низкого уровня, которому поручено просматривать журналы.

С учетом вышесказанного мы можем изменить пароль пользователя, создав md5-пароль.

  • Postgres, когда хеширует пароль как md5, соединяет пароль с именем пользователя, а затем добавляет текст "md5" к полученному хешу.
  • ex: "md5"+md5(password + username)

  • В bash:

    ~$ echo -n "passwordStringUserName" | md5sum | awk '{print "md5"$1}'
    md5d6a35858d61d85e4a82ab1fb044aba9d
  • В PowerShell:
    [PSCredential] $Credential = Get-Credential

    $StringBuilder = New-Object System.Text.StringBuilder

    $null = $StringBuilder.Append('md5');

    [System.Security.Cryptography.HashAlgorithm]::Create('md5').ComputeHash([System.Text.Encoding]::ASCII.GetBytes(((ConvertFrom-SecureStringToPlainText -SecureString $Credential.Password) + $Credential.UserName))) | ForEach-Object {
        $null = $StringBuilder.Append($_.ToString("x2"))
    }

    $StringBuilder.ToString();

    ## OUTPUT
    md5d6a35858d61d85e4a82ab1fb044aba9d
  • Итак, наконец наша команда ALTER USER будет выглядеть как
    ALTER USER UserName WITH PASSWORD 'md5d6a35858d61d85e4a82ab1fb044aba9d';
  • Соответствующие ссылки (обратите внимание, что я буду ссылаться только на последние версии документов для старых версий, некоторые из них меняются, но md5 все еще поддерживает способы возврата).
  • создать роль
  • Пароль всегда хранится в зашифрованном виде в системных каталогах. Ключевое слово ENCRYPTED не имеет никакого эффекта, но принимается для обратной совместимости. Способ шифрования определяется параметром конфигурации password_encryption. Если представленная строка пароля уже имеет формат MD5 или SCRAM, то она сохраняется как есть, независимо от password_encryption (поскольку система не может расшифровать указанную зашифрованную строку пароля, чтобы зашифровать ее в другом формате). Это позволяет перезагрузить зашифрованные пароли во время дампа/восстановления.

  • настройка конфигурации для password_encryption
  • документация по аутентификации пароля postgres
  • Пост Postgres пароль Md5

Ответ 14

и полностью автоматизированный способ с bash и ожидаем (в этом примере мы предоставляем новому администратору postgres недавно предоставленный postgres pw как на уровне ОС, так и на уровне времени выполнения postgres)

  # the $postgres_usr_pw and the other bash vars MUST be defined 
  # for reference the manual way of doing things automated with expect bellow
  #echo "copy-paste: $postgres_usr_pw"
  #sudo -u postgres psql -c "\password"
  # the OS password could / should be different
  sudo -u root echo "postgres:$postgres_usr_pw" | sudo chpasswd

  expect <<- EOF_EXPECT
     set timeout -1
     spawn sudo -u postgres psql -c "\\\password"
     expect "Enter new password: "
     send -- "$postgres_usr_pw\r"
     expect "Enter it again: "
     send -- "$postgres_usr_pw\r"
     expect eof
EOF_EXPECT

  cd /tmp/
  # at this point the postgres uses the new password
  sudo -u postgres PGPASSWORD=$postgres_usr_pw psql \
    --port $postgres_db_port --host $postgres_db_host -c "
  DO \$\$DECLARE r record;
     BEGIN
        IF NOT EXISTS (
           SELECT
           FROM   pg_catalog.pg_roles
           WHERE  rolname = '"$postgres_db_useradmin"') THEN
              CREATE ROLE "$postgres_db_useradmin" WITH SUPERUSER CREATEROLE
              CREATEDB REPLICATION BYPASSRLS 
 PASSWORD '"$postgres_db_useradmin_pw"' LOGIN ;
        END IF;
     END\$\$;
  ALTER ROLE "$postgres_db_useradmin" WITH SUPERUSER CREATEROLE
  CREATEDB REPLICATION BYPASSRLS 

ПАРОЛЬ '"$ postgres_db_useradmin_pw"' ВХОД;    "