Ini benar-benar terlihat seperti kesalahan izin file. Soket domain Unix adalah file dan memiliki izin pengguna sama seperti yang lainnya. Sepertinya pengguna OSX yang mencoba mengakses database tidak memiliki izin file untuk mengakses file soket. Untuk mengonfirmasi ini, saya telah melakukan beberapa tes di Ubuntu dan psql untuk mencoba menghasilkan kesalahan yang sama (termasuk di bawah).
Anda perlu memeriksa izin pada file soket dan direktorinya /var
dan /var/pgsql_socket
. Aplikasi Rails Anda (pengguna OSX) harus memiliki izin eksekusi (x) pada direktori ini (sebaiknya berikan izin kepada semua orang) dan soket harus memiliki izin penuh (wrx). Anda dapat menggunakan ls -lAd <file>
untuk memeriksa ini, dan jika salah satunya adalah symlink, Anda perlu memeriksa file atau direktori yang ditunjuk tautan.
Anda dapat mengubah hak akses dir untuk Anda sendiri, tetapi soket dikonfigurasi oleh postgres di postgresql.conf
. Ini dapat ditemukan di direktori yang sama dengan pg_hba.conf
(Anda harus mencari tahu yang mana). Setelah Anda menetapkan izin, Anda harus memulai ulang postgresql.
# postgresql.conf should contain...
unix_socket_directory = '/var/run/postgresql' # dont worry if yours is different
#unix_socket_group = '' # default is fine here
#unix_socket_permissions = 0777 # check this one and uncomment if necessary.
EDIT:
Saya telah melakukan pencarian cepat di google yang mungkin ingin Anda lihat untuk melihat apakah itu relevan. Ini mungkin menghasilkan upaya apa pun untuk find
file konfigurasi Anda gagal.
http://www.postgresqlformac.com/server/howto_edit_postgresql_confi.html
Pesan kesalahan:
Pengguna tidak ditemukan di pg_hba.conf
psql: FATAL: no pg_hba.conf entry for host "[local]", user "couling", database "main", SSL off
Otentikasi sandi pengguna gagal:
psql: FATAL: password authentication failed for user "couling"
File soket unix tidak ada:
psql: could not connect to server: No such file or directory
Is the server running locally and accepting
connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?
Soket Unix ada, tetapi server tidak mendengarkannya.
psql: could not connect to server: Connection refused
Is the server running locally and accepting
connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?
Izin file buruk pada file soket unix :
psql: could not connect to server: Permission denied
Is the server running locally and accepting
connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?