sql >> Databasteknik >  >> RDS >> PostgreSQL

Kan inte ansluta till lokal PostgreSQL

Detta ser verkligen ut som ett filbehörighetsfel. Unix-domänsockets är filer och har användarbehörigheter precis som alla andra. Det ser ut som om OSX-användaren som försöker komma åt databasen inte har filbehörighet att komma åt socket-filen. För att bekräfta detta har jag gjort några tester på Ubuntu och psql för att försöka generera samma fel (ingår nedan).

Du måste kontrollera behörigheterna för socketfilen och dess kataloger /var och /var/pgsql_socket . Din Rails-app (OSX-användare) måste ha exekveringsbehörighet (x) på dessa kataloger (ge helst alla behörigheter) och socket bör ha fullständiga behörigheter (wrx). Du kan använda ls -lAd <file> för att kontrollera dessa, och om någon av dem är en symbollänk måste du kontrollera filen eller dir som länken pekar på.

Du kan ändra behörigheterna för dir själv, men socket konfigureras av postgres i postgresql.conf . Detta kan hittas i samma katalog som pg_hba.conf (Du måste ta reda på vilken). När du har ställt in behörigheterna måste du starta om 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:

Jag har gjort en snabb sökning på google som du kanske vill titta på för att se om det är relevant. Detta kan mycket väl leda till alla försök att find din konfigurationsfil misslyckas.

http://www.postgresqlformac.com/server/howto_edit_postgresql_confi.html

Felmeddelanden:

Användaren hittades inte i pg_hba.conf

psql: FATAL:  no pg_hba.conf entry for host "[local]", user "couling", database "main", SSL off

Användaren misslyckades med lösenordsautentisering:

psql: FATAL:  password authentication failed for user "couling"

Unix-socketfil saknas:

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"?

Unix-socket finns, men servern lyssnar inte på den.

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"?

Dåliga filbehörigheter för unix-socketfil :

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"?


  1. SQLAlchemy func.count på boolesk kolumn

  2. How to_char() Fungerar i PostgreSQL

  3. Hur man byter ut en del av en sträng i MySQL

  4. SQL Server AlwaysOn ( Availability Group ) Arkitektur och Steg för Steg Installation - 3 Manuell misslyckande över steg