Điều này thực sự trông giống như một lỗi quyền đối với tệp. Các ổ cắm miền Unix là các tệp và có quyền của người dùng giống như bất kỳ ổ cắm nào khác. Có vẻ như người dùng OSX cố gắng truy cập cơ sở dữ liệu không có quyền truy cập tệp socket. Để xác nhận điều này, tôi đã thực hiện một số thử nghiệm trên Ubuntu và psql để cố gắng tạo ra cùng một lỗi (bao gồm bên dưới).
Bạn cần kiểm tra các quyền trên tệp socket và các thư mục của nó /var
và /var/pgsql_socket
. Ứng dụng Rails của bạn (người dùng OSX) phải có quyền thực thi (x) trên các thư mục này (tốt nhất là cấp quyền cho mọi người) và socket phải có đầy đủ quyền (wrx). Bạn có thể sử dụng ls -lAd <file>
để kiểm tra những thứ này và nếu bất kỳ cái nào trong số chúng là một liên kết tượng trưng, bạn cần kiểm tra tệp hoặc tìm đường dẫn liên kết đến.
Bạn có thể tự mình thay đổi các quyền trên dir, nhưng socket được định cấu hình bởi postgres trong postgresql.conf
. Điều này có thể được tìm thấy trong cùng một thư mục với pg_hba.conf
(Bạn sẽ phải tìm ra cái nào). Khi bạn đã đặt các quyền, bạn sẽ cần khởi động lại 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.
CHỈNH SỬA:
Tôi đã thực hiện một tìm kiếm nhanh trên google mà bạn có thể muốn xem xét xem nó có bị phá vỡ hay không. Điều này có thể dẫn đến bất kỳ nỗ lực nào để find
tệp cấu hình của bạn không thành công.
http://www.postgresqlformac.com/server/howto_edit_postgresql_confi.html
Thông báo lỗi:
Không tìm thấy người dùng trong pg_hba.conf
psql: FATAL: no pg_hba.conf entry for host "[local]", user "couling", database "main", SSL off
Người dùng không xác thực được mật khẩu:
psql: FATAL: password authentication failed for user "couling"
Thiếu tệp ổ cắm unix:
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"?
Ổ cắm Unix tồn tại, nhưng máy chủ không lắng nghe nó.
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"?
Quyền đối với tệp không hợp lệ trên tệp ổ cắm 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"?