Bagaimana cara mengubah kata sandi untuk pengguna PostgreSQL?
Untuk password kurang login:
sudo -u user_name psql db_name
Untuk me-reset password jika anda lupa:
ALTER USER user_name WITH PASSWORD 'new_password';
Kemudian ketik:
$ sudo -u postgres psql
Maka:
\password postgres
Kemudian untuk berhenti psql
:
\q
Jika itu tidak bekerja, mengkonfigurasi otentikasi.
Edit /etc/postgresql/9.1/main/pg_hba.conf
(jalan akan berbeda) dan perubahan:
local all all peer
untuk:
local all all md5
Kemudian restart server:
$ sudo service postgresql restart
Saya percaya cara terbaik untuk mengubah password hanya menggunakan:
\password
di Postgres konsol.
Sumber:
hati-Hati harus dilakukan ketika menentukan terenkripsi dengan password perintah ini. Password akan dikirimkan ke server dalam cleartext, dan mungkin juga bisa login di client's sejarah perintah atau server log. psql berisi perintah \password yang dapat digunakan untuk mengubah peran's sandi tanpa mengekspos cleartext password.
dari https://www.postgresql.org/docs/9.0/static/sql-alterrole.html.
Untuk mengubah password menggunakan Linux command line, gunakan:
sudo -u <user_name> psql -c "ALTER USER <user_name> PASSWORD '<new_password>';"
Pergi ke Postgresql anda Config dan Mengedit 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 PostgreSQL service melalui perintah SUDO kemudian
psql -U postgres
Anda sekarang akan masuk dan akan Melihat Postgresql terminal
kemudian masukkan
\password
dan masukkan Password BARU untuk Postgres pengguna default, Setelah Berhasil mengubah Password lagi pergi ke pg_hba.conf dan mengembalikan perubahan ke "md5"
sekarang anda akan login sebagai
psql -U postgres
dengan Password baru anda.
Biarkan aku tahu jika anda menemukan masalah apapun di dalamnya.
Ini adalah hasil pertama di google, ketika saya sedang mencari cara mengubah nama pengguna, sehingga:
ALTER USER <username> WITH PASSWORD '<new_password>'; -- change password
ALTER USER <old_username> RENAME TO <new_username>; -- rename user
Beberapa perintah lain yang bermanfaat untuk manajemen user:
CREATE USER <username> PASSWORD '<password>' IN GROUP <group>;
DROP USER <username>;
Memindahkan pengguna ke kelompok lain
ALTER GROUP <old_group> DROP USER <username>;
ALTER GROUP <new_group> ADD USER <username>;
Konfigurasi yang saya've got di server saya ini disesuaikan banyak dan saya berhasil mengubah password hanya setelah saya set kepercayaan otentikasi dalam pg_hba.conf
file:
local all all trust
Don't lupa untuk mengubah ini kembali ke password atau md5
Untuk kasus saya di Ubuntu 14.04 diinstal dengan postgres 10.3. Saya perlu mengikuti langkah-langkah berikut
su - postgres
untuk beralih user postgres
psql
dengan memasukkan postgres shell\password
kemudian masukkan password anda\q
untuk keluar dari shell sesikeluar
dan mengkonfigurasi pg_hba.conf
(saya adalah di /etc/postgresql/10/main/pg_hba.conf
) dengan memastikan anda memiliki baris berikutlokal semua postgres md5
service postgresql restart
postgres
user dan masukkan postgres shell lagi. Ini akan meminta anda dengan password.gunakan ini:
\password
masukkan password baru yang anda inginkan untuk pengguna dan kemudian mengkonfirmasi hal itu. Jika anda don't ingat password dan anda ingin mengubahnya, anda dapat login sebagai postgres dan kemudian menggunakan ini:
ALTER USER 'the username' WITH PASSWORD 'the new password';
Serupa dengan jawaban yang lain dalam sintaks tetapi harus diketahui bahwa anda juga dapat lulus md5 password sehingga anda tidak mengirimkan password teks biasa.
Berikut adalah beberapa skenario dari konsekuensi yang tidak diinginkan dari mengubah password pengguna dalam teks biasa.
log_statement = ddl
atau lebih tinggi, maka anda plain text password akan muncul di log kesalahan.Dengan mengatakan bahwa di sini adalah bagaimana kita bisa mengubah user's sandi dengan membangun md5 password.
Postgres ketika hash password seperti md5, garam password dengan user name kemudian menambahkan teks "md5" untuk hash yang dihasilkan.
ex: "md5"+md5(password + username)
Di bash:
bash ~$ echo -n "passwordStringUserName" | md5sum | awk '{cetak "md5"$1}' md5d6a35858d61d85e4a82ab1fb044aba9d
Di PowerShell: ``powershell [PSCredential] $Credential = Masuk-Kredensial
$StringBuilder = Baru-Objek Sistem.Teks.StringBuilder
$null = $StringBuilder.Append('md5');
[System.Security.Cryptography.HashAlgorithm]::Create('md5').ComputeHash([System.Text.Encoding]::ASCII.GetBytes(((ConvertFrom-SecureStringToPlainText -SecureString $Credential.Sandi) + $Credential.UserName))) | ForEach-Objek { $null = $StringBuilder.Append($_.ToString("2")) }
$StringBuilder.ToString();
md5d6a35858d61d85e4a82ab1fb044aba9d ``
Jadi, akhirnya kami ALTER USER
command akan terlihat seperti
psql MENGUBAH USER UserName DENGAN PASSWORD 'md5d6a35858d61d85e4a82ab1fb044aba9d';
Link yang relevan (Catatan saya hanya akan link ke versi terbaru dari dokumen yang lebih tua itu beberapa perubahan tetapi md5 masih mendukung cara-cara untuk kembali.)
password selalu disimpan terenkripsi di sistem katalog. DIENKRIPSI kata kunci tidak memiliki efek, tetapi diterima untuk mundur kompatibilitas. Metode enkripsi ini ditentukan oleh parameter konfigurasi password_encryption. Jika disajikan password string yang sudah di MD5-dienkripsi atau SCRAM-format terenkripsi, maka itu akan disimpan sebagai-adalah terlepas dari password_encryption (karena sistem tidak dapat mendekripsi ditentukan password terenkripsi string, untuk mengenkripsi itu dalam format yang berbeda). Hal ini memungkinkan reload password terenkripsi selama dump/restore.
pengaturan konfigurasi untuk password_encryption
dan sepenuhnya otomatis dengan bash dan mengharapkan ( dalam contoh ini kami ketentuan baru postgres admin baru ditetapkan postgres pw kedua pada OS dan postgres run-time level )
# 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 ; "
Secara umum, hanya menggunakan pg admin UI untuk melakukan db aktivitas terkait.
Jika bukan anda yang focusin lebih dalam mengotomatisasi setup database untuk pengembangan lokal anda, atau CI dll...
Misalnya, anda dapat menggunakan combo sederhana seperti ini.
(a) Membuat dummy super user melalui jenkins dengan perintah seperti ini:
docker exec -t postgres11-instance1 createuser --username=postgres --superuser experiment001
hal ini akan membuat pengguna super yang disebut experiment001 di anda postgres db.
(b) Memberikan pengguna ini beberapa password dengan berjalan NON-Interaktif perintah SQL.
docker exec -t postgres11-instance1 psql -U experiment001 -d postgres -c "ALTER USER experiment001 WITH PASSWORD 'experiment001' "
Postgres adalah mungkin database yang terbaik di luar sana untuk baris perintah (non-interaktif) perkakas. Menciptakan pengguna, menjalankan SQL, membuat backup dari database dll... Secara umum hal ini semua sangat dasar dengan postgres dan hal ini secara keseluruhan cukup sepele untuk mengintegrasikan ini ke dalam pengembangan setup script atau ke otomatis CI konfigurasi.