Isso realmente parece um erro de permissões de arquivo. Soquetes de domínio Unix são arquivos e têm permissões de usuário como qualquer outro. Parece que o usuário OSX que está tentando acessar o banco de dados não tem permissões de arquivo para acessar o arquivo de soquete. Para confirmar isso fiz alguns testes no Ubuntu e no psql para tentar gerar o mesmo erro (incluído abaixo).
Você precisa verificar as permissões no arquivo de soquete e seus diretórios
/var
e /var/pgsql_socket
. Seu aplicativo Rails (usuário OSX) deve ter permissões de execução (x) nesses diretórios (de preferência conceder permissões a todos) e o soquete deve ter permissões completas (wrx). Você pode usar ls -lAd <file>
para verificar isso, e se algum deles for um link simbólico, você precisa verificar o arquivo ou o diretório para o qual o link aponta. Você pode alterar as permissões no diretório para você mesmo, mas o soquete é configurado pelo postgres em
postgresql.conf
. Isso pode ser encontrado no mesmo diretório que pg_hba.conf
(Você terá que descobrir qual). Depois de definir as permissões, você precisará reiniciar o 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.
EDITAR:
Fiz uma pesquisa rápida no google que você pode querer verificar para ver se é relevante. Isso pode resultar em qualquer tentativa de
find
seu arquivo de configuração falhando. http://www.postgresqlformac.com/server/howto_edit_postgresql_confi.html
Mensagens de erro:
Usuário não encontrado em pg_hba.conf
psql: FATAL: no pg_hba.conf entry for host "[local]", user "couling", database "main", SSL off
Autenticação de senha com falha do usuário:
psql: FATAL: password authentication failed for user "couling"
Arquivo de soquete unix ausente:
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"?
O soquete Unix existe, mas o servidor não o escuta.
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"?
Permissões de arquivo inválidas no arquivo de soquete 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"?