When I run the
rake db:migrate or run the
rails s command, I get the same error:
Error : 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"?
I get the error in the browser when I try
This is my database.yml
default: &default adapter: postgresql encoding: unicode pool: 5 development: <<: *default database: books_development test: <<: *default database: books_test production: <<: *default database: books_production username: abd password: <%= ENV['BOOKS_DATABASE_PASSWORD'] %>
Note : I have the databases
; and the postresql are running without problems when I try
sudo /etc/init.d/postgresql start
I did run:
create database books_development; create database books_test;
in the psql console. And it said that it's done successfully
I tried a lot of solutions and I spent yesterday looking for a solution and no solution in the related questions solved my error.
I have postgresql-9.4 (the latest) and xubuntu 14.04
The convention for PostgreSQL packaged for Debian or Debian derivatives such as Ubuntu is to use
/var/run/postgresql as the directory for Unix domain sockets. On the other hand the convention for self-compiled postgres client libs is to use
/tmp, unless self-configured otherwise.
So the usual root cause of this mismatch between both is a mix of self-compiled client-side stuff with pre-compiled server-side packages (even if client and server are installed on the same machine, client-side and server-side are still distinct and can be out of sync).
/tmp to this directory as suggested by the asker works except that the link will be lost at every reboot, because in general
/tmp is emptied on reboot.
A better option would be to add as an entry in
host: /tmpif the real socket path is
/tmp(self-compiled server, packaged client)
host: /var/run/postgresqlif the real socket path
/var/run/postgresql/(packaged server, self-compiled client).
When the value in the host field starts with a slash character, the postgres library knows that it's the location of a directory for local sockets rather than a hostname. The filename inside the directory
.s.PGSQL.portnumber is generated and must not be specified, only the directory.
Another possibility is to configure the self-compiled software packages as closely as possible to Debian, overriding the defaults as they do.
I had the same
Is the server running locally and accepting connections on Unix domain socket “/var/run/postgresql/.s.PGSQL.5432”? error when typing
psql into the postgres user in Ubuntu 14.04. I could not find an existing working solution.
The short answer for me was: my install made a
var/pgsql_socket directory but no configuration files knew about it.
1) Find the
postgres.conf file (it was in
etc/postgresql/9.6/main for me)
2) change to
listen_addresses = '*'
3) add another unix socket directory
unix_socket_directories = '/var/run/postgresql, /var/pgsql_socket' # comma-separated list of directories
4) at this point, sudo service postgresql start attempted to start but did not have authority to create the lock file.
* The PostgreSQL server failed to start. Please check the log output:
2016-10-05 17:14:55 CEST [28472-1] FATAL: could not create lock file "/var/pgsql_socket/.s.PGSQL.5432.lock": Permission denied
2016-10-05 17:14:55 CEST [28472-2] LOG: database system is shut down
5) Change permissions ( found from Mark Berry's comment here )
$ sudo chown root.postgres /var/pgsql_socket
$ sudo chmod g+wx /var/pgsql_socket
sudo service postgresql start
sudo -i -u postgres
That finally worked for me
I solved It . I Just created a softlink using :
sudo ln -s /tmp/.s.PGSQL.5432 /var/run/postgresql/.s.PGSQL.5432
and then edited the
( If you have another version of postgresql you have to change 9.4 in the path)
local all postgres peer
local all postgres md5
The exact same symptom can be caused by a stale lock file
/var/run/postgresql/.s.PGSQL.5432.lock. One of the symptoms of this is
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"?
even though there is clearly a socket with this path available as reported by
netstat -lp --protocol=unix | grep postgres
The problem can be solved by removing the lock file and restarting postgresql. This is definitely less invasive than a purge and re-install.
sudo rm /var/run/postgresql/.s.PGSQL.5432.lock sudo service postgresql restart
and this. (9.3 is my current PostgreSQL version. Write your version!)
sudo pg_createcluster 9.3 main --start
When I run into this error, my postgres server was acutally listening on a different port (5433). To solve this, add a line in your database.yml to instruct rails to use the same:
pg_lsclusters will list all the postgres clusters running on your device
Ver Cluster Port Status Owner Data directory Log file 9.6 main 5432 online postgres /var/lib/postgresql/9.6/main /var/log/postgresql/postgresql-9.6-main.log
if the status is down run
#format is pg_ctlcluster <version> <cluster> <action> sudo pg_ctlcluster 9.6 main start
If this process is not successfull it will throw the error.
My error was(You can see the error log on
FATAL: could not access private key file "/etc/ssl/private/ssl-cert-snakeoil.key": Permission denied Try adding `postgres` user to the group `ssl-cert`
make sure that
postgres is the owner of
sudo chown postgres -R /var/lib/postgresql/9.6/main/
It happened to me and it turned out that I removed erroneously the Postgres user from "ssl-cert" group. Run the below code to fix the user group issue and fixing the permissions
#set user to group back with sudo gpasswd -a postgres ssl-cert # Fixed ownership and mode sudo chown root:ssl-cert /etc/ssl/private/ssl-cert-snakeoil.key sudo chmod 740 /etc/ssl/private/ssl-cert-snakeoil.key # now postgresql starts! (and install command doesn't fail anymore) sudo service postgres restart
That means your Postgres server is not running.
Check Postgres Service status from Terminal
sudo service postgresql status
Enable Postgres Service, If not started
sudo service postgresql start
sudo service postgresql restart
Now your command should work, If Postgres Service is successfully started.