Ответы:
Для пароля меньше логин:
sudo -u user_name psql db_name
Чтобы сбросить пароль, если вы забыли:
ALTER USER user_name WITH PASSWORD 'new_password';
rm ~/.psql_history
ALTER USER myuser RENAME TO newname;
... по какой-то причине Google указал мне здесь, когда я гуглял это :)
Затем введите:
$ 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
\p
, он дает мне пароль; если я \password postgres
\p extra argument "assword" ignored; \p extra argument "postgres" ignored
sudo passwd postgres
Вы можете и должны иметь пароль пользователя в зашифрованном виде:
ALTER USER username WITH ENCRYPTED PASSWORD 'password';
The password is always stored encrypted in the system catalogs. The ENCRYPTED keyword has no effect, but is accepted for backwards compatibility.
Я считаю, что лучший способ изменить пароль - это просто использовать:
\password
в консоли Postgres.
Источник:
При указании незашифрованного пароля с помощью этой команды следует соблюдать осторожность. Пароль будет передан на сервер в виде открытого текста, и он также может быть зарегистрирован в истории команд клиента или в журнале сервера. psql содержит команду \ пароль, которую можно использовать для изменения пароля роли без раскрытия пароля в виде открытого текста.
с https://www.postgresql.org/docs/9.0/static/sql-alterrole.html .
\password username
Чтобы изменить пароль с помощью командной строки Linux, используйте:
sudo -u <user_name> psql -c "ALTER USER <user_name> PASSWORD '<new_password>';"
Сменить пароль
sudo -u postgres psql
тогда
\password postgres
Теперь введите новый пароль и подтвердите
затем \q
выйти
Перейдите к вашему Postgresql Config и отредактируйте pg_hba.conf
sudo vim /etc/postgresql/9.3/main/pg_hba.conf
Затем измени эту строку:
Database administrative login by Unix domain socket
local all postgres md5
к:
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
с вашим новым паролем.
Дайте мне знать, если вы все найдете какие-либо проблемы в этом.
user@user-NC10:~$ psql -U postgres psql: FATAL: Peer authentication failed for user "postgres"
$version,' /usr/bin/psql: psql: line 26:
my ($ version, $ cluster, $ db, $ port , $ host); ' Спасибо за вашу помощь!
Конфигурация, которую я получил на своем сервере, была сильно изменена, и мне удалось изменить пароль только после того, как я установил доверительную аутентификацию в pg_hba.conf
файле :
local all all trust
Не забудьте изменить это обратно на пароль или md5
sudo systemctl restart postgresql.service
Это был первый результат в 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>;
Для моего случая на 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
service postgresql restart
postgres
пользователя и снова войдите в оболочку postgres. Он подскажет вам пароль.использовать этот:
\password
введите новый пароль, который вы хотите для этого пользователя, а затем подтвердите его. Если вы не помните пароль и хотите изменить его, вы можете войти в систему как postgres, а затем использовать это:
ALTER USER 'the username' WITH PASSWORD 'the new password';
Подобно другим ответам в синтаксисе, но следует знать, что вы также можете передать md5 пароля, чтобы не передавать простой текстовый пароль.
Вот несколько сценариев непреднамеренных последствий изменения пароля пользователя в виде обычного текста.
log_statement = ddl
записей или выше, то ваш простой текстовый пароль будет отображаться в журналах ошибок.
С учетом сказанного, вот как мы можем изменить пароль пользователя, создав md5-пароль.
например: "md5" + md5 (пароль + имя пользователя)
В Баш:
~$ echo -n "passwordStringUserName" | md5sum | awk '{print "md5"$1}'
md5d6a35858d61d85e4a82ab1fb044aba9d
[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';
Пароль всегда хранится в зашифрованном виде в системных каталогах. Ключевое слово ENCRYPTED не имеет никакого эффекта, но принимается для обратной совместимости. Способ шифрования определяется параметром конфигурации password_encryption. Если представленная строка пароля уже имеет формат MD5 или SCRAM, то она сохраняется как есть, независимо от password_encryption (поскольку система не может расшифровать указанную зашифрованную строку пароля, чтобы зашифровать ее в другом формате). Это позволяет перезагрузить зашифрованные пароли во время дампа / восстановления.
В общем, просто используйте pg admin UI для выполнения действий, связанных с БД.
Если вместо этого вы больше сосредоточены на автоматизации настройки базы данных для вашей локальной разработки, или CI и т.д ...
Например, вы можете использовать простой комбо, как это.
(a) Создайте фиктивного суперпользователя с помощью jenkins с помощью команды, подобной этой:
docker exec -t postgres11-instance1 createuser --username=postgres --superuser experiment001
это создаст супер пользователя с именем Exper001 в вашем postgres db.
(b) Дайте этому пользователю какой-нибудь пароль, выполнив НЕИнтерактивную команду SQL.
docker exec -t postgres11-instance1 psql -U experiment001 -d postgres -c "ALTER USER experiment001 WITH PASSWORD 'experiment001' "
Postgres, вероятно, лучшая база данных для инструментов командной строки (неинтерактивная). Создание пользователей, запуск SQL, создание резервных копий базы данных и т. Д. В целом все это довольно просто для postgres, и в целом довольно просто интегрировать это в сценарии установки разработки или в автоматическую настройку CI.
и полностью автоматизированный способ с bash и ожидаем ( в этом примере мы предоставляем нового администратора postgres с недавно предоставленным pg postgres как для ОС, так и для уровня времени выполнения 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
PASSWORD '"$postgres_db_useradmin_pw"' LOGIN ;
"
TLDR:
Во многих системах учетная запись пользователя часто содержит точку или какую-то функцию (пользователь: john.smith, horise.johnson). В этих случаях необходимо внести изменения в принятый ответ выше. Изменение требует, чтобы имя пользователя было заключено в двойные кавычки.
Example:
ALTER USER "username.lastname" WITH PASSWORD 'password';
Rational:
Postgres довольно требователен к тому, когда использовать «двойную кавычку» и когда использовать «одинарную кавычку». Обычно при предоставлении строки вы используете одинарную кавычку.