postgresql - remotas - postgres no sabe dónde encontrar el archivo de configuración del servidor
¿Por qué psql no puede conectarse al servidor? (13)
¡Resuelto! Aunque no sé qué sucedió, solo eliminé todas las cosas y las reinstalé. Este es el comando que utilicé para eliminarlo sudo apt-get --purge remove postgresql/*
y dpkg -l | grep postgres
dpkg -l | grep postgres
. El último es encontrar todos los paquetes en caso de que no esté limpio.
psql
y obtengo esto:
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"?
Utilicé sudo netstat -nlp | grep 5432
sudo netstat -nlp | grep 5432
para ver el estado pero no se mostró nada. Y busqué en línea, alguien me dijo que modificara pg_hba.conf
pero no puedo locate
este archivo. Y también probé este comando sudo ln -s /tmp/.s.PGSQL.5432 /var/run/postgresql/.s.PGSQL.5432
. No puede funcionar
Así que para mí y mis amigos que trabajan en una aplicación Node.js (con Postgres y Sequelize), tuvimos que
brew install postgresql
(a uno de nosotros le faltaba postgres, a uno de nosotros no lo estaba, y sin embargo, estábamos obteniendo el mismo mensaje de error que el que aparece arriba)brew services start postgresql
**** (utilice Homebrew para iniciar postgres)createdb <name of database in config.json file>
node_modules/.bin/sequelize db:migrate
npm start
Durante la instalación nueva de postgresql. Por defecto, el nombre de usuario y la contraseña se asignan como "postgres". La característica que proporciona este RDBMS es agregar un rol para un nuevo usuario y crear una base de datos. Si está recibiendo tales errores:
iniciar sesión por defecto nombre de usuario:
root @ kalilinux: ~ # sudo -i -u postgres
ype psql para solicitud interactiva
postgres @ kalilinux: ~ $ psql
Para salir del uso inmediato
/ q
Para crear un nuevo rol de usuario.
postgres @ kalilinux: ~ $ createuser --interactive
Ahora estas en el shell psql interacive. Disfrutar. No olvide iniciar sesión desde su nombre de usuario y escriba psql para shell.
El error indica que la utilidad psql no puede encontrar el zócalo para conectarse a su servidor de base de datos. O no tiene el servicio de base de datos ejecutándose en segundo plano, o el socket está ubicado en otro lugar, o tal vez el pg_hba.conf
necesita ser arreglado.
Paso 1: verifique que la base de datos se está ejecutando
El comando puede variar dependiendo de su sistema operativo. Pero en la mayoría de los sistemas * ix, lo siguiente funcionaría, buscará postgres entre todos los procesos en ejecución
ps -ef | grep postgres
En mi sistema, Mac OSX, esto escupe.
501 408 1 0 2Jul15 ?? 0:21.63 /usr/local/opt/postgresql/bin/postgres -D /usr/local/var/postgres -r /usr/local/var/postgres/server.log
La última columna muestra el comando utilizado para iniciar el servidor y las opciones.
Puede ver todas las opciones disponibles para iniciar el servidor de Postgres utilizando lo siguiente.
man postgres
A partir de ahí, verá que las opciones -D
y -r
son respectivamente el nombre de datadir
y el nombre de logfilename
.
Paso 2: Si el servicio de postgres se está ejecutando
Utilice find
para buscar la ubicación del zócalo, que debería estar en algún lugar de /tmp
sudo find /tmp/ -name .s.PGSQL.5432
Si postgres se está ejecutando y acepta conexiones de zócalo, lo anterior debe indicarle la ubicación del zócalo. En mi máquina, resultó ser:
/tmp/.s.PGSQL.5432
Luego, intente conectarse a través de psql usando la ubicación de este archivo explícitamente, por ejemplo.
psql -h /tmp/ dbname
Paso 3: si el servicio se está ejecutando pero no ves un socket
Si no puede encontrar el socket, pero observa que el servicio se está ejecutando, verifique que el archivo pg_hba.conf permita sockets locales.
Busque el datadir
y debería encontrar el archivo pg_hba.conf
.
De forma predeterminada, cerca de la parte inferior del archivo debería ver las siguientes líneas:
# "local" is for Unix domain socket connections only
local all all trust
Si no lo ve, puede modificar el archivo y reiniciar el servicio de postgres.
El error significa que el servidor de Postgres no se está ejecutando. Intenta iniciarlo:
sudo systemctl start postgresql
Asegúrese de que el servidor se inicia en el arranque:
sudo systemctl enable postgresql
Estaba enfrentando el mismo problema y
sudo su - postgres
initdb --locale en_US.UTF-8 -D /var/lib/postgres/data
exit
sudo systemctl start postgresql
sudo systemctl status postgresql
Esto funcionó para mí.
Me he encontrado con un problema similar un par de veces. Normalmente, solo hago una instalación nueva de PostgreSQL siguiendo este tutorial y eso resuelve el problema a costa de perder datos.
Estaba decidido a obtener una solución real hoy. Reiniciar PostgreSQL lo resolvió en ubuntu. sudo /etc/init.d/postgresql restart
Mi problema con este mensaje de error estaba en los permisos incorrectos en los certificados de clave y pem, que he manipulado. Lo que me ayudó mucho fue: /var/log/postgresql/postgresql-9.5-main.log donde están todos los errores.
Puede causar cualquier cosa, por ejemplo, mi problema fue causado por un error tipográfico en los archivos de configuración. Algunas personas dicen que son causadas por archivos de certificados, otro grupo dice que son causadas por locales sin igual.
Si no puede encontrar una solución a su problema, elimine postgres y vuelva a instalarlo. Esta es la mejor solución.
Si no hay ningún error al iniciar el servicio de postgres, siga estos pasos
Paso 1: la ejecución de pg_lsclusters
mostrará una lista de todos los clústeres de postgres que se ejecutan en su dispositivo
p.ej:
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
lo más probable es que el estado sea bajo en su caso y en el servicio postgres
Paso 2: Reinicia el pg_ctlcluster
#format is pg_ctlcluster <version> <cluster> <action>
sudo pg_ctlcluster 9.6 main start
#restart postgres
sudo service postgres restart
Paso 3: Paso 2 falló y arrojó error
Si este proceso no tiene éxito, lanzará el error. Mi error fue (Puede ver el registro de errores en /var/log/postgresql/postgresql-9.6-main.log
)
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`
Paso 4: comprobar la propiedad de postgres
Asegúrese de que postgres
sea el propietario de /var/lib/postgresql/version_no/main
por ejemplo: sudo chown postgres -R /var/lib/postgresql/9.6/main/
Paso 5: Verificar que el usuario de Postgres pertenece al grupo de usuarios ssl-cert
Me sucedió y resultó que eliminé por error al usuario de Postgres del grupo "ssl-cert". Ejecute el siguiente código para solucionar el problema del grupo de usuarios y corregir los permisos
#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
Solo quiere hacer una pequeña adición: si su instancia se queja en un socket, también puede consultar unix_socket_directories
en el archivo /data/postgresql.conf
que podría haberse establecido en /tmp
, por ejemplo, si ha utilizado una distribución de terceros. . Puede cambiarlo a /var/run/postgresql
y reiniciar el servicio. Esto también puede requerir la creación de un directorio postgresql
en /var/run
y subsys/postgresql-9.6
en /var/lock
si esos no existen (funcionó para mí con postgresql 9.6).
Tuve el mismo problema con Devuan ascii (¿quizás Debian también?). El archivo de configuración /etc/postgresql/9.6/main/postgresql.conf
contiene una directiva unix_socket_directories
que apunta a /var/run/postgresql
de forma predeterminada. Al cambiarlo a /tmp
, donde la mayoría de los clientes se ven por defecto, lo solucioné para mí.
guía rápida sobre debian:
- edite
/etc/postgresql/10/main/postgresql.conf
con listen_address * - edite
/etc/postgresql/10/main/pg_hba.conf
y agregue una línea al final conhost all all 0/0 md5
- crear un rol de inicio de sesión
postgres=# CREATE ROLE remoteuser LOGIN WITH PASSWORD ''foo''
sudo /etc/init.d/postgresql restart
cambios desudo /etc/init.d/postgresql restart
surten efectoinicie sesión desde el lado del
psql --host=ipofserver --port=5432 --username=remoteuser --password --dbname=mydb
conpsql --host=ipofserver --port=5432 --username=remoteuser --password --dbname=mydb
- la contraseña se pregunta de forma interactiva, que en este caso es foo
eso es cómo acceder de forma remota a la base de datos postgres en el servidor desde el cliente psql