Apa nama pengguna / kata sandi superuser default untuk postgres setelah instalasi baru?

Jawaban:

534

PERHATIAN Jawaban tentang mengubah kata sandi UNIX untuk "postgres" melalui "$ sudo passwd postgres" tidak disukai, dan bahkan bisa BERBAHAYA !

Inilah sebabnya: Secara default, "postgres" akun UNIX terkunci, yang berarti tidak dapat masuk menggunakan kata sandi. Jika Anda menggunakan "sudo passwd postgres", akun itu langsung tidak dikunci. Lebih buruk lagi, jika Anda mengatur kata sandi ke sesuatu yang lemah, seperti "postgres", maka Anda terkena bahaya keamanan yang besar. Sebagai contoh, ada sejumlah bot di luar sana yang mencoba nama pengguna / kata sandi kombo "postgres / postgres" untuk masuk ke sistem UNIX Anda.

Yang harus Anda lakukan adalah mengikuti jawaban Chris James :

sudo -u postgres psql postgres

# \password postgres

Enter new password: 

Untuk menjelaskannya sedikit. Biasanya ada dua cara default untuk masuk ke server PostgreSQL:

  1. Dengan menjalankan "psql" perintah sebagai pengguna UNIX (yang disebut-IDENT / PEER otentikasi), misalnya: sudo -u postgres psql. Catatan yang sudo -uTIDAK membuka kunci pengguna UNIX.

  2. oleh koneksi TCP / IP menggunakan username / password PostgreSQL yang dikelola sendiri (disebut otentikasi TCP) (yaitu, BUKAN kata sandi UNIX).

Jadi, Anda tidak pernah ingin mengatur kata sandi untuk akun "postgres" UNIX. Biarkan terkunci karena sudah diatur sebelumnya.

Tentu saja hal-hal dapat berubah jika Anda mengonfigurasinya secara berbeda dari pengaturan default. Sebagai contoh, seseorang dapat menyinkronkan kata sandi PostgreSQL dengan kata sandi UNIX dan hanya mengizinkan masuk lokal. Itu akan berada di luar cakupan pertanyaan ini.

pengguna716468
sumber
11
jadi, bagaimana Anda mengunci postgres pengguna kembali?
ultrajohn
3
@ultrajohn - tergantung pada distribusi yang Anda gunakan, tetapi Anda dapat mengedit / etc / passwd dan meletakkan * alih-alih kata sandi
lzap
3
/etc/shadowadalah tempat kata sandi disimpan @ lzap.
Gringo Suave
2
Benar, Anda dapat mengatur / sbin / nologin di / etc / passwd atau meletakkan * alih-alih kata sandi di / etc / shadow.
lzap
34
passwd --lock postgres
Stéphane
166

Masukkan pada baris perintah:

$ sudo -u postgres psql postgres
postgres=# \password postgres

Anda akan melihat:

Enter new password: 
Enter it again:
dcrawkstar
sumber
7
Inilah yang diperlukan untuk menggunakan alat seperti pgadminIII (saat mengatur profil server) segera setelah Postgres sendiri diinstal. Terima kasih!
limist
64

Anda memanipulasi postgres melalui pengguna postgres, seperti:

# su - postgres
$ createdb mydb
$ psql -s mydb
# create user someuser password 'somepassword';
# GRANT ALL PRIVILEGES ON DATABASE mydb TO someuser;
David Mackintosh
sumber
5
@ThierryLam Anda harus me-root ke supengguna postgres tanpa memasukkan kata sandi. Pada kebanyakan sistem, akun Postgres Unix dikunci (tidak ada kata sandi yang akan berfungsi), yang berarti hanya root suuntuk akun itu.
voretaq7
2
Gunakan sudosebagai ganti su.
reinierpost
8
Saya harus lari sudo su - postgres: \
Jim Schubert
3
@ Jim Schubert: Anda juga bisa berlari sudo -u postgres.
reinierpost
1
sudo -u postgres psql - berfungsi juga sehingga Anda dapat melakukannya dalam satu langkah.
Ominus
21

Di Windows, lakukan hal berikut (PENTING: Gunakan akun administrator Windows ):

  1. Setelah instalasi, buka <PostgreSQL PATH>\data\pg_hba.conf.

  2. Ubah dua baris ini, dan ubah "md5" menjadi "trust":

    host all all 127.0.0.1/32 md5

    host all all ::1/128 md5

  3. Mulai ulang layanan PostgreSQL (mungkin tidak perlu).

  4. (Opsional) Buka prompt perintah, dan ubah halaman kode menjadi 1252:

    cmd.exe /c chcp 1252

  5. Masuk ke PostgreSQL. Akan diperlukan kata sandi (perhatikan parameter huruf besar -U):

    psql -U postgres

  6. (Opsional, disarankan karena alasan keamanan) Ubah postgreskata sandi pengguna:

    \password postgres

    dan ubah "trust" kembali ke "md5" di pg_hba.conf.

MS Dousti
sumber
5

Jika Anda mencoba mengakses shell PostgreSQL, Anda dapat mengetik:

psql -U postgres my_database

Di mana my_databasenama basis data Anda.

Marcio Mazzucato
sumber