Yanıtlar:
Daha az şifre girişi için:
sudo -u user_name psql db_name
Unuttuysanız şifreyi sıfırlamak için:
ALTER USER user_name WITH PASSWORD 'new_password';
rm ~/.psql_history
ALTER USER myuser RENAME TO newname;
ben :) o googling zaman google beni buraya işaret ediyordu nedense ...
Sonra şunu yazın:
$ sudo -u postgres psql
Sonra:
\password postgres
Sonra çıkmak için psql
:
\q
Bu işe yaramazsa, kimlik doğrulamasını yeniden yapılandırın.
Düzenle /etc/postgresql/9.1/main/pg_hba.conf
(yol farklı olacaktır) ve değiştirin:
local all all peer
için:
local all all md5
Ardından sunucuyu yeniden başlatın:
$ sudo service postgresql restart
\p
bana şifreyi veriyor; Eğer bunu \password postgres
\p extra argument "assword" ignored; \p extra argument "postgres" ignored
sudo passwd postgres
Kullanıcıların parolasını şifreleyebilirsiniz ve almalısınız:
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.
Şifreyi değiştirmenin en iyi yolunun sadece kullanmak olduğuna inanıyorum:
\password
Postgres konsolunda.
Kaynak:
Bu komutla şifrelenmemiş bir parola belirlerken dikkatli olunmalıdır. Parola sunucuya açık metin olarak aktarılır ve istemcinin komut geçmişine veya sunucu günlüğüne de kaydedilebilir. psql, açık metin parolasını göstermeden bir rolün parolasını değiştirmek için kullanılabilecek bir komut \ parola içerir.
dan https://www.postgresql.org/docs/9.0/static/sql-alterrole.html .
\password username
Linux komut satırını kullanarak parolayı değiştirmek için şunu kullanın:
sudo -u <user_name> psql -c "ALTER USER <user_name> PASSWORD '<new_password>';"
Parolayı Değiştirmek İçin
sudo -u postgres psql
sonra
\password postgres
şimdi Yeni Parola girin ve Onaylayın
sonra \q
çıkmak
Postgresql Yapılandırma ve Düzenleme sayfanıza gidin pg_hba.conf
sudo vim /etc/postgresql/9.3/main/pg_hba.conf
Sonra bu satırı değiştirin:
Database administrative login by Unix domain socket
local all postgres md5
kime:
Database administrative login by Unix domain socket
local all postgres peer
sonra SUDO komutu ile PostgreSQL hizmetini yeniden başlatın ve
psql -U postgres
Şimdi girilecek ve Postgresql terminalini göreceksiniz
sonra gir
\password
ve Postgres varsayılan kullanıcı için YENİ Parolayı girin, Parolayı Başarıyla değiştirdikten sonra tekrar pg_hba.conf adresine gidin ve değişikliği "md5" olarak geri alın
şimdi olarak giriş yapacaksın
psql -U postgres
yeni şifrenizle.
İçinde herhangi bir sorun bulursan haber ver.
user@user-NC10:~$ psql -U postgres psql: FATAL: Peer authentication failed for user "postgres"
$version,' /usr/bin/psql: psql: line 26:
($ sürüm, $ cluster, $ db, $ port , $ host); ' yardımın için teşekkürler!
Sunucumda yaptığım yapılandırma çok özelleştirildi ve şifreyi yalnızca dosyada güven kimlik doğrulaması ayarladıktan sonra değiştirmeyi başardım :pg_hba.conf
local all all trust
Bunu tekrar şifre veya md5 olarak değiştirmeyi unutmayın
sudo systemctl restart postgresql.service
Bu nasıl bir kullanıcıyı yeniden adlandırmak için bakıyordu google ilk sonuç oldu, yani:
ALTER USER <username> WITH PASSWORD '<new_password>'; -- change password
ALTER USER <old_username> RENAME TO <new_username>; -- rename user
Kullanıcı yönetimi için faydalı birkaç komut daha:
CREATE USER <username> PASSWORD '<password>' IN GROUP <group>;
DROP USER <username>;
Kullanıcıyı başka bir gruba taşıma
ALTER GROUP <old_group> DROP USER <username>;
ALTER GROUP <new_group> ADD USER <username>;
Postgres 10.3 yüklü Ubuntu 14.04 benim durumum için. Aşağıdaki adımları izlemem gerekiyor
su - postgres
kullanıcı olarak postgres
psql
postgres kabuğuna girmek\password
sonra şifrenizi girin\q
kabuk oturumundan çıkmakSonra yürüterek köküne geri dönmek exit
ve keşfetmenize yapılandırmak pg_hba.conf
(maden olan /etc/postgresql/10/main/pg_hba.conf
aşağıdakilerden emin hattı yaparak)
local all postgres md5
service postgresql restart
postgres
kullanıcıya geçin ve postgres kabuğunu tekrar girin. Sizden şifre istenecektir.bunu kullan:
\password
söz konusu kullanıcı için istediğiniz yeni şifreyi girin ve ardından onaylayın. Şifreyi hatırlamıyorsanız ve değiştirmek istiyorsanız postgres olarak giriş yapabilir ve ardından bunu kullanabilirsiniz:
ALTER USER 'the username' WITH PASSWORD 'the new password';
Sözdizimindeki diğer yanıtlara benzer, ancak düz metin parola iletmemek için parolanın md5'ini de geçirebileceğiniz bilinmelidir.
Aşağıda, kullanıcı parolasını düz metin olarak değiştirmenin istenmeyen sonuçlarına ilişkin birkaç senaryo verilmiştir.
log_statement = ddl
veya daha yüksek bir günlüğü kaydetmek üzere ayarlandıysa , düz metin parolanız hata günlüklerinizde görünecektir.
Bununla birlikte, parolanın bir md5'ini oluşturarak bir kullanıcının parolasını nasıl değiştirebileceğimiz açıklanmaktadır.
ör .: "md5" + md5 (şifre + kullanıcı adı)
Bash'da:
~$ 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
şöyle görünecek ALTER USER UserName WITH PASSWORD 'md5d6a35858d61d85e4a82ab1fb044aba9d';
Parola her zaman sistem kataloglarında şifrelenmiş olarak saklanır. ENCRYPTED anahtar kelimenin hiçbir etkisi yoktur, ancak geriye dönük uyumluluk için kabul edilir. Şifreleme yöntemi password_encryption yapılandırma parametresi tarafından belirlenir. Sunulan şifre dizesi zaten MD5 şifreli veya SCRAM şifreli biçimdeyse, password_encryption'dan bağımsız olarak olduğu gibi saklanır (sistem, belirtilen şifreli şifre dizgisinin şifresini farklı bir biçimde şifrelemek için şifresini çözemediğinden). Bu, döküm / geri yükleme sırasında şifrelenmiş parolaların yeniden yüklenmesini sağlar.
Genel olarak, sadece db ile ilgili aktivite yapmak için pg admin UI kullanın.
Bunun yerine, yerel gelişiminiz için veritabanı kurulumunu otomatikleştirmeye veya CI vb.
Örneğin, bunun gibi basit bir kombo kullanabilirsiniz.
(a) Şuna benzer bir komutla jenkinler aracılığıyla bir kukla süper kullanıcı oluşturun:
docker exec -t postgres11-instance1 createuser --username=postgres --superuser experiment001
Bu size dg postgres içinde exper001 adlı süper bir kullanıcı yaratacaktır.
(b) NON-Interactive SQL komutu çalıştırarak bu kullanıcıya bir şifre verin.
docker exec -t postgres11-instance1 psql -U experiment001 -d postgres -c "ALTER USER experiment001 WITH PASSWORD 'experiment001' "
Postgres muhtemelen komut satırı (etkileşimli olmayan) takımlar için en iyi veritabanıdır. Kullanıcılar oluşturmak, SQL çalıştırmak, veritabanını yedeklemek vb. ... Genel olarak postgres ile oldukça basittir ve bunu geliştirme kurulum komut dosyalarınıza veya otomatik CI yapılandırmasına entegre etmek genel olarak oldukça önemlidir.
ve bash ve bekle ile tam otomatik yöntem ( bu örnekte , hem işletim sisteminde hem de postgres çalışma zamanı düzeyinde yeni sağlanan postgres pw ile yeni bir postgres yöneticisi sağlıyoruz)
# 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:
Birçok sistemde, bir kullanıcının hesabı genellikle bir dönem veya bir tür işlev içerir (kullanıcı: john.smith, horise.johnson). Bu durumlarda, yukarıdaki kabul edilen cevapta bir değişiklik yapılması gerekecektir. Değişiklik için kullanıcı adının çift tırnak içine alınması gerekir.
Example:
ALTER USER "username.lastname" WITH PASSWORD 'password';
Akılcı:
Postgres ne zaman 'çift tırnak' ve ne zaman 'tek tırnak' kullanılacağına dair oldukça seçici. Genellikle bir dize sağlarken tek bir alıntı kullanırsınız.