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.confberkas: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.conffile (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 postgresDan, 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
postgrespengguna,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
postgresyang setara dengan PostgreSQL dariSASQL 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.