Відповіді:
Для пароля, менший за вхід:
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 ($ версія, $ cluster, $ db, $ port , $ хост); ' спасибі за вашу допомогу!
Конфігурація, яку я отримав на своєму сервері, була настроєна дуже багато, і мені вдалося змінити пароль лише після встановлення автентифікації довіри у 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
щоб ввести оболонку постгресів\password
потім введіть свій пароль\q
щоб вийти з сеансу оболонкиПотім ви переходите назад до root, виконуючи exit
та налаштовуючи pg_hba.conf
(мій знаходиться на /etc/postgresql/10/main/pg_hba.conf
), переконуючись, що у вас є наступний рядок
local all postgres md5
service postgresql restart
postgres
користувача та знову введіть оболонку постгрес. Він підкаже вам пароль.використовуй це:
\password
введіть новий пароль, який ви хочете для цього користувача, а потім підтвердіть його. Якщо ви не пам’ятаєте пароль і хочете його змінити, ви можете увійти як постгрес, а потім скористатися цим:
ALTER USER 'the username' WITH PASSWORD 'the new password';
Подібно до інших відповідей у синтаксисі, але слід знати, що ви також можете передати md5 пароля, щоб не передати звичайний текстовий пароль.
Ось кілька сценаріїв ненавмисних наслідків зміни пароля користувачів у простому тексті.
log_statement = ddl
або вище, ваш звичайний текстовий пароль відображатиметься у ваших журналах помилок.
З урахуванням сказаного ось як ми можемо змінити пароль користувача, побудувавши md5 пароля.
напр .: "md5" + md5 (пароль + ім'я користувача)
В bash:
~$ 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 форматі, він зберігається як-незалежно від пароля_кодування (оскільки система не може розшифрувати вказаний зашифрований рядок пароля, щоб зашифрувати його в іншому форматі). Це дозволяє перезавантажити зашифровані паролі під час скидання / відновлення.
Як правило, просто використовуйте інтерфейс адміністратора pg для здійснення діяльності, пов’язаної з db.
Якщо замість цього, ви більше зосереджуєтесь на автоматизації налаштування бази даних для вашого локального розвитку, або CI тощо ...
Наприклад, ви можете використовувати просту комбо, як це.
(a) Створіть фіктивного суперкористувача через jenkins командою, подібною до цієї:
docker exec -t postgres11-instance1 createuser --username=postgres --superuser experiment001
це створить супер користувача під назвою експеримент001 у вашому postgres db.
(b) Дайте цьому користувачеві пароль, виконавши команду NON-Interactive SQL.
docker exec -t postgres11-instance1 psql -U experiment001 -d postgres -c "ALTER USER experiment001 WITH PASSWORD 'experiment001' "
Postgres - це, мабуть, найкраща база даних для інструментального командного рядка (неінтерактивного). Створення користувачів, запуск SQL, створення резервних копій баз даних і т.д. ... Взагалі це все досить просто з postgres, і взагалі досить тривіально інтегрувати це у свої сценарії налаштування розробки або в автоматизовану конфігурацію CI.
і повністю автоматизований спосіб з bash and очікуванням ( у цьому прикладі ми надаємо новий адмістр postgres з нещодавно передбаченими postgres pw як на OS, так і на рівні виконання 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';
Раціональний:
Postgres досить прискіпливий до того, коли використовувати "подвійну цитату" та коли використовувати "єдину цитату". Зазвичай при наданні рядка ви використовуєте одну пропозицію.