Jawaban:
Untuk kata sandi login lebih sedikit:
sudo -u user_name psql db_name
Untuk mengatur ulang kata sandi jika Anda lupa:
ALTER USER user_name WITH PASSWORD 'new_password';
rm ~/.psql_history
ALTER USER myuser RENAME TO newname;
... untuk beberapa alasan google menunjuk saya di sini ketika saya googling itu :)
Kemudian ketik:
$ sudo -u postgres psql
Kemudian:
\password postgres
Lalu untuk berhenti psql
:
\q
Jika itu tidak berhasil, konfigurasikan ulang otentikasi.
Edit /etc/postgresql/9.1/main/pg_hba.conf
(jalur akan berbeda) dan ubah:
local all all peer
untuk:
local all all md5
Kemudian restart server:
$ sudo service postgresql restart
\p
, itu memberi saya kata sandi; jika saya mengetiknya \password postgres
berikan kata sandi dan kemudian peringatan\p extra argument "assword" ignored; \p extra argument "postgres" ignored
sudo passwd postgres
Anda dapat dan harus membuat kata sandi pengguna dienkripsi:
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.
Saya percaya cara terbaik untuk mengubah kata sandi adalah dengan menggunakan:
\password
di konsol Postgres.
Sumber:
Perhatian harus dilakukan ketika menentukan kata sandi yang tidak terenkripsi dengan perintah ini. Kata sandi akan ditransmisikan ke server dalam cleartext, dan mungkin juga dicatat dalam sejarah perintah klien atau log server. psql berisi perintah \ kata sandi yang dapat digunakan untuk mengubah kata sandi peran tanpa mengekspos kata sandi teks-bersih.
dari https://www.postgresql.org/docs/9.0/static/sql-alterrole.html .
\password username
Untuk mengubah kata sandi menggunakan baris perintah Linux, gunakan:
sudo -u <user_name> psql -c "ALTER USER <user_name> PASSWORD '<new_password>';"
Untuk Mengubah Kata Sandi
sudo -u postgres psql
kemudian
\password postgres
sekarang masukkan Kata Sandi Baru dan Konfirmasikan
lalu \q
keluar
Buka Postgresql Config Anda dan Edit pg_hba.conf
sudo vim /etc/postgresql/9.3/main/pg_hba.conf
Kemudian Ubah Baris ini:
Database administrative login by Unix domain socket
local all postgres md5
untuk:
Database administrative login by Unix domain socket
local all postgres peer
kemudian Restart layanan PostgreSQL melalui perintah SUDO
psql -U postgres
Anda sekarang akan dimasukkan dan akan melihat terminal Postgresql
lalu masuk
\password
dan masukkan Kata Sandi BARU untuk pengguna default Postgres, Setelah Berhasil mengubah Kata Sandi lagi pergi ke pg_hba.conf dan kembalikan perubahan ke "md5"
sekarang Anda akan masuk sebagai
psql -U postgres
dengan kata sandi baru Anda.
Beri tahu saya jika Anda semua menemukan masalah di dalamnya.
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); ' terima kasih atas bantuan Anda!
Konfigurasi yang saya dapatkan di server saya telah disesuaikan banyak dan saya berhasil mengubah kata sandi hanya setelah saya menetapkan otentikasi trust dalam pg_hba.conf
file :
local all all trust
Jangan lupa untuk mengubah ini kembali ke kata sandi atau md5
sudo systemctl restart postgresql.service
Ini adalah hasil pertama di google, ketika saya mencari cara mengubah nama pengguna, jadi:
ALTER USER <username> WITH PASSWORD '<new_password>'; -- change password
ALTER USER <old_username> RENAME TO <new_username>; -- rename user
Beberapa perintah lain yang membantu manajemen pengguna:
CREATE USER <username> PASSWORD '<password>' IN GROUP <group>;
DROP USER <username>;
Pindahkan pengguna ke grup lain
ALTER GROUP <old_group> DROP USER <username>;
ALTER GROUP <new_group> ADD USER <username>;
Untuk kasus saya di Ubuntu 14,04 diinstal dengan postgres 10.3. Saya perlu mengikuti langkah-langkah berikut
su - postgres
untuk mengalihkan pengguna ke postgres
psql
untuk masuk ke shell postgres\password
lalu masukkan kata sandi Anda\q
untuk keluar dari sesi shellKemudian Anda beralih kembali ke root dengan mengeksekusi exit
dan mengkonfigurasi pg_hba.conf
(milik saya /etc/postgresql/10/main/pg_hba.conf
) dengan memastikan Anda memiliki baris berikut
local all postgres md5
service postgresql restart
postgres
pengguna dan masukkan shell postgres lagi. Ini akan meminta Anda dengan kata sandi.Gunakan ini:
\password
masukkan kata sandi baru yang Anda inginkan untuk pengguna itu dan kemudian konfirmasikan. Jika Anda tidak mengingat kata sandi dan ingin mengubahnya, Anda dapat masuk sebagai postgres dan kemudian gunakan ini:
ALTER USER 'the username' WITH PASSWORD 'the new password';
Mirip dengan jawaban lain dalam sintaks tetapi harus diketahui bahwa Anda juga dapat melewati md5 kata sandi sehingga Anda tidak mengirimkan kata sandi teks biasa.
Berikut adalah beberapa skenario konsekuensi yang tidak diinginkan dari mengubah kata sandi pengguna dalam teks biasa.
log_statement = ddl
atau lebih tinggi, kata sandi teks biasa Anda akan muncul di log kesalahan Anda.
Yang mengatakan di sini adalah bagaimana kita dapat mengubah kata sandi pengguna dengan membangun md5 kata sandi.
mis: "md5" + md5 (kata sandi + nama pengguna)
Dalam 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
perintah kita akan terlihat seperti ALTER USER UserName WITH PASSWORD 'md5d6a35858d61d85e4a82ab1fb044aba9d';
Kata sandi selalu disimpan terenkripsi dalam katalog sistem. Kata kunci ENCRYPTED tidak berpengaruh, tetapi diterima untuk kompatibilitas mundur. Metode enkripsi ditentukan oleh parameter konfigurasi password_encryption. Jika string kata sandi yang disajikan sudah dalam format terenkripsi MD5 atau dienkripsi SCRAM, maka itu disimpan apa adanya terlepas dari kata sandi_kripsinya (karena sistem tidak dapat mendekripsi string kata sandi terenkripsi yang ditentukan, untuk mengenkripsi dalam format yang berbeda). Ini memungkinkan pemuatan ulang kata sandi terenkripsi selama dump / restore.
Secara umum, cukup gunakan pg admin UI untuk melakukan aktivitas terkait db.
Jika sebaliknya Anda lebih fokus dalam mengotomatisasi pengaturan basis data untuk pengembangan lokal Anda, atau CI dll ...
Misalnya, Anda dapat menggunakan kombo sederhana seperti ini.
(a) Buat pengguna super dummy melalui jenkins dengan perintah yang mirip dengan ini:
docker exec -t postgres11-instance1 createuser --username=postgres --superuser experiment001
ini akan membuat super user bernama experiment001 di postgres db Anda.
(B) Berikan pengguna ini beberapa kata sandi dengan menjalankan perintah SQL NON-Interaktif.
docker exec -t postgres11-instance1 psql -U experiment001 -d postgres -c "ALTER USER experiment001 WITH PASSWORD 'experiment001' "
Postgres mungkin adalah database terbaik di luar sana untuk tooling baris perintah (non-interaktif). Membuat pengguna, menjalankan SQL, membuat cadangan database dll ... Secara umum semuanya cukup mendasar dengan postgres dan secara keseluruhan cukup sepele untuk mengintegrasikan ini ke dalam skrip pengaturan pengembangan Anda atau ke dalam konfigurasi CI otomatis.
dan cara yang sepenuhnya otomatis dengan bash dan expect ( dalam contoh ini kami menyediakan admin postgres baru dengan postgres yang baru disediakan baik pada OS dan level run-time 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:
Pada banyak sistem, akun pengguna sering berisi titik, atau semacam punction (pengguna: john.smith, horise.johnson). Dalam hal ini, modifikasi harus dilakukan terhadap jawaban yang diterima di atas. Perubahan ini mengharuskan nama pengguna dikutip dua kali lipat.
Example:
ALTER USER "username.lastname" WITH PASSWORD 'password';
Rasional:
Postgres cukup pilih-pilih kapan harus menggunakan 'penawaran ganda' dan kapan harus menggunakan 'penawaran tunggal'. Biasanya saat memberikan string, Anda akan menggunakan kutipan tunggal.