Cela ressemble vraiment à une erreur d'autorisation de fichier. Les sockets de domaine Unix sont des fichiers et ont des autorisations d'utilisateur comme n'importe quel autre. Il semble que l'utilisateur OSX tentant d'accéder à la base de données ne dispose pas des autorisations de fichier pour accéder au fichier socket. Pour confirmer cela, j'ai fait quelques tests sur Ubuntu et psql pour essayer de générer la même erreur (incluse ci-dessous).
Vous devez vérifier les permissions sur le fichier socket et ses répertoires /var
et /var/pgsql_socket
. Votre application Rails (utilisateur OSX) doit avoir des autorisations d'exécution (x) sur ces répertoires (accordez de préférence des autorisations à tout le monde) et le socket doit avoir des autorisations complètes (wrx). Vous pouvez utiliser ls -lAd <file>
pour les vérifier, et si l'un d'entre eux est un lien symbolique, vous devez vérifier le fichier ou le répertoire vers lequel le lien pointe.
Vous pouvez modifier vous-même les autorisations sur le répertoire, mais le socket est configuré par postgres dans postgresql.conf
. Cela peut être trouvé dans le même répertoire que pg_hba.conf
(Vous devrez trouver lequel). Une fois que vous avez défini les autorisations, vous devrez redémarrer 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.
MODIF :
J'ai effectué une recherche rapide sur Google que vous voudrez peut-être examiner pour voir si elle est pertinente. Cela pourrait bien entraîner toute tentative de find
votre fichier de configuration échoue.
http://www.postgresqlformac.com/server/howto_edit_postgresql_confi.html
Messages d'erreur :
Utilisateur introuvable dans pg_hba.conf
psql: FATAL: no pg_hba.conf entry for host "[local]", user "couling", database "main", SSL off
Échec de l'authentification du mot de passe :
psql: FATAL: password authentication failed for user "couling"
Fichier de socket Unix manquant :
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"?
Le socket Unix existe, mais le serveur ne l'écoute pas.
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"?
Autorisations de fichier incorrectes sur le fichier de socket 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"?