Как изменить пароль для пользователя 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 пароля, чтобы не передавать простой текстовый пароль.
Вот несколько сценариев непреднамеренных последствий изменения пароля пользователя в виде обычного текста.
- Если у вас нет SSL и вы изменяете удаленно, вы передаете простой текстовый пароль по сети.
- Если для вашей конфигурации ведения журнала задано ведение отчетов DDL
log_statement = ddl
или более поздней версии, то ваш простой текстовый пароль будет отображаться в журналах ошибок.- Если вы не защищаете эти журналы, это проблема.
- Если вы соберете эти журналы /ETL и покажете их там, где другие имеют доступ, они могут в конечном итоге увидеть этот пароль и т.д.
- Если вы позволяете пользователю управлять своим паролем, он неосознанно раскрывает пароль администратору или сотруднику низкого уровня, которому поручено просматривать журналы.
С учетом вышесказанного мы можем изменить пароль пользователя, создав 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"' ВХОД; "