Jawaban lainnya tidak sepenuhnya memuaskan saya. Inilah yang berhasil untuk postgresql-9.1 di Xubuntu 12.04.1 LTS.
-
Sambungkan ke database default dengan postgres pengguna:
sudo -u postgres psql template1
-
Tetapkan kata sandi untuk pengguna postgres, lalu keluar dari psql (Ctrl-D):
ALTER USER postgres dengan kata sandi terenkripsi 'xxxxxxx';
-
Edit
pg_hba.conf
berkas:sudo vim /etc/postgresql/9.1/main/pg_hba.conf
dan ubah "peer" menjadi "md5" pada baris mengenai postgres:
lokal semua postgres
rekanmd5Untuk mengetahui versi postgresql yang Anda jalankan, cari folder versi di bawah
/etc/postgresql
. Selain itu, Anda dapat menggunakan Nano atau editor lain selain VIM. -
Mulai ulang basis data :
sudo /etc/init.d/postgresql restart
(Di sini Anda dapat memeriksa apakah itu berfungsi dengan
psql -U postgres
). -
Buat pengguna dengan nama yang sama dengan Anda (untuk menemukannya, Anda dapat mengetikkan
whoami
):sudo createuser -U postgres -d -e -E -l -P -r -s
<my_name>
Opsi memberi tahu postgresql untuk membuat pengguna yang dapat masuk, membuat basis data, membuat peran baru, adalah pengguna super, dan akan memiliki kata sandi terenkripsi. Yang sangat penting adalah -P -E, agar Anda diminta untuk mengetikkan kata sandi yang akan dienkripsi, dan -d agar Anda dapat melakukan
createdb
.Waspadalah terhadap sandi :ini pertama-tama akan meminta Anda dua kali kata sandi baru (untuk pengguna baru), berulang, dan kemudian sekali kata sandi postgres (yang ditentukan pada langkah 2).
-
Sekali lagi, edit
pg_hba.conf
file (lihat langkah 3 di atas), dan ubah "peer" menjadi "md5" pada baris tentang "semua" pengguna lain:lokal semua semua
rekanmd5 -
Mulai ulang (seperti pada langkah 4), dan periksa apakah Anda dapat masuk tanpa -U postgres:
templat psql1
Perhatikan bahwa jika Anda hanya melakukan
psql
, itu akan gagal karena akan mencoba menghubungkan Anda ke database default yang memiliki nama yang sama dengan Anda (mis.whoami
). template1 adalah database admin yang ada di sini sejak awal. -
Sekarang
createdb <dbname>
harus bekerja.
Di Linux PostgresQL biasanya dikonfigurasi untuk mengizinkan pengguna root untuk login sebagai superuser postgres postgres
dari shell (konsol atau ssh).
$ psql -U postgres
Maka Anda cukup membuat database baru seperti biasa:
CREATE ROLE myuser LOGIN password 'secret';
CREATE DATABASE mydatabase ENCODING 'UTF8' OWNER myuser;
Ini seharusnya bekerja tanpa menyentuh pg_hba.conf
. Jika Anda ingin dapat melakukan ini menggunakan beberapa alat GUI melalui jaringan - maka Anda perlu mengotak-atik pg_hba.conf
.
Ada dua cara yang bisa Anda gunakan. Keduanya membutuhkan pembuatan pengguna dan basis data.
-
Menggunakan createuser dan createdb ,
$ sudo -u postgres createuser --superuser $USER $ createdb mydatabase $ psql -d mydatabase
-
Menggunakan perintah administrasi SQL, dan menghubungkan dengan sandi melalui TCP
$ sudo -u postgres psql postgres
Dan, kemudian di shell psql
CREATE ROLE myuser LOGIN PASSWORD 'mypass'; CREATE DATABASE mydatabase WITH OWNER = myuser;
Kemudian Anda dapat masuk,
$ psql -h localhost -d mydatabase -U myuser -p <port>
Jika Anda tidak mengetahui portnya, Anda selalu bisa mendapatkannya dengan menjalankan perintah berikut, seperti
postgres
pengguna,SHOW port;
Atau,
$ grep "port =" /etc/postgresql/*/main/postgresql.conf
Sidenote:postgres
pengguna
Saya menyarankan BUKAN memodifikasi postgres
pengguna.
- Biasanya dikunci dari OS. Tidak seorang pun seharusnya "masuk" ke sistem operasi sebagai
postgres
. Anda seharusnya memiliki root untuk mengautentikasi sebagaipostgres
. - Biasanya tidak dilindungi sandi dan didelegasikan ke sistem operasi host. Ini adalah hal yang baik . Ini biasanya berarti untuk masuk sebagai
postgres
yang setara dengan PostgreSQL dariSA
SQL Server , Anda harus memiliki akses tulis ke file data yang mendasarinya. Dan, itu berarti Anda biasanya dapat merusak malapetaka. - Dengan menonaktifkan ini, Anda menghilangkan risiko serangan brute force melalui pengguna super bernama. Menyembunyikan dan menyamarkan nama pengguna super memiliki kelebihan.