Menjalankan server PostgreSQL pada Void Linux. Setelah menginstal, jalankan initdb
sebagai pengguna OS 'postgres':
[user@host]$ sudo -u postgres -i
$ initdb -D '/var/lib/postgresql/data'
Output yang diterima:
membuat direktori /var/lib/postgresql/data ... ok membuat subdirektori ... ok memilih default max_connections ... 100 memilih default shared_buffers ... 128MB memilih dynamic shared implementasi memori ... posix membuat berkas konfigurasi ... ok menjalankan skrip bootstrap ... ok melakukan post-bootstrap inisialisasi ... lokal: Tidak dapat mengatur LC_MESSAGES ke lokal default: Tidak ada file atau direktori seperti itu ok menyinkronkan data ke disk ... ok
PERINGATAN: Mengaktifkan otentikasi "trust" untuk koneksi lokal Anda dapat ubah ini dengan mengedit pg_hba.conf atau menggunakan opsi -A, atau --auth-local dan --auth-host, pada saat Anda menjalankan initdb.
Sukses. Anda sekarang dapat memulai server basis data dengan menggunakan: pg_ctl -D /var/lib/postgresql/data -l logfile start
Saya kemudian melanjutkan untuk membuat layanan, memberikan kepemilikan kepada 'postgres ' dan memulainya:
[user@host]$ ln -s /etc/sv/postgresql /var/service
[user@host]$ sudo chown postgres: /var/service/postgresql
[user@host]$ sudo sv start postgresql
[user@host]$ ls -l /var/service/postgresql
lrwxrwxrwx 1 postgres postgres 18 nov 2 17:05 /var/service/postgresql -> /etc/sv/postgresql
Menjalankan:
[user@host]$ sudo -u postgres psql ...
akan memberikan kesalahan berikut:
psql: FATAL: role "postgres" does not exist
Saya telah mencoba memberikan kepemilikan /etc/sv/postgresql
kepada 'postgres', tetapi tidak berhasil.
Ini adalah sumber saya:
https://wiki.voidlinux.eu/PostgreSQL
Kesalahan PostgreSQL: Fatal: peran "nama pengguna" tidak ada
Saya tidak tahu apa yang harus saya lakukan selanjutnya.
EDIT: Menemukan psql: FATAL: role "postgres" tidak ada. Tidak dapat menjalankan psql -l
karena saya mendapatkan kesalahan yang sama, tidak peduli sebagai pengguna mana saya menjalankan psql
.
Bukan jawaban yang lengkap, tetapi pertimbangkan manual tentang initdb
di sini:
-U
nama pengguna
--username=
username
Memilih nama pengguna dari superuser basis data. Nilai defaultnya adalah nama pengguna efektif yang menjalankan
initdb
. Hal ini sebenarnya tidak penting apa nama superuser ', tetapi seseorang dapat memilih untuk tetap menggunakan nama biasa postgres, bahkan jika nama pengguna sistem operasi berbeda.
Artinya ...
Ketika menjalankan initdb
sebagai pengguna OS postgres
, peran superuser DB awal adalah postgres
juga - dalam Postgres standar. Saya pernah mendengar sistem yang melanggar aturan ini ...
Anda seharusnya dapat memaksakan nama postgres
dengan --username=postgres
untuk superuser awal - kecuali jika paket Anda benar-benar mengacaukan semua ini.