J'ai installé la pile Bitnami Django qui incluait PostgreSQL 8.4.
Quand je cours, psql -U postgres
j'obtiens l'erreur suivante:
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"?
PG est définitivement en cours d'exécution et le pg_hba.conf
fichier ressemble à ceci:
# TYPE DATABASE USER CIDR-ADDRESS METHOD
# "local" is for Unix domain socket connections only
local all all md5
# IPv4 local connections:
host all all 127.0.0.1/32 md5
# IPv6 local connections:
host all all ::1/128 md5
Ce qui donne?
"Preuve" que pg est en cours d'exécution:
root@assaf-desktop:/home/assaf# ps axf | grep postgres
14338 ? S 0:00 /opt/djangostack-1.3-0/postgresql/bin/postgres -D /opt/djangostack-1.3-0/postgresql/data -p 5432
14347 ? Ss 0:00 \_ postgres: writer process
14348 ? Ss 0:00 \_ postgres: wal writer process
14349 ? Ss 0:00 \_ postgres: autovacuum launcher process
14350 ? Ss 0:00 \_ postgres: stats collector process
15139 pts/1 S+ 0:00 \_ grep --color=auto postgres
root@assaf-desktop:/home/assaf# netstat -nltp | grep 5432
tcp 0 0 127.0.0.1:5432 0.0.0.0:* LISTEN 14338/postgres
tcp6 0 0 ::1:5432 :::* LISTEN 14338/postgres
root@assaf-desktop:/home/assaf#
postgresql
Assaf Lavie
la source
la source
Réponses:
Ce problème provient de l'installation du
postgres
package sans numéro de version. Bien quepostgres
sera installé et que sa version sera correcte, le script pour configurer le cluster ne fonctionnera pas correctement. c'est un problème d'emballage.Si vous êtes à l'aise,
postgres
vous pouvez exécuter un script pour créer ce cluster et le fairepostgres
fonctionner. Cependant, il existe un moyen plus simple.Commencez par purger l’ancienne installation postgres. Le problème réside actuellement dans la version 9.1, donc je suppose que c’est ce que vous avez installé.
Maintenant, réinstallez simplement
Notez le nom du package avec le numéro de version. HTH.
la source
Le message d'erreur fait référence à un socket de domaine Unix, vous devez donc modifier votre
netstat
invocation pour ne pas les exclure. Alors essayez-le sans l'option-t
:Je suppose que le serveur écoute réellement sur le socket
/tmp/.s.PGSQL.5432
plutôt que celui/var/run/postgresql/.s.PGSQL.5432
auquel votre client tente de se connecter. Ceci est un problème typique lors de l' utilisation des paquets PostgreSQL main compilé ou tiers sur Debian ou Ubuntu, car la source par défaut pour le répertoire de socket de domaine Unix est/tmp
mais l'emballage Debian change à/var/run/postgresql
.Solutions possibles:
/opt/djangostack-1.3-0/postgresql/bin/psql
). Désinstallez éventuellement les paquets fournis par Ubuntu (cela pourrait être difficile en raison d'autres dépendances inverses).-H localhost
plutôt pour vous connecter via TCP / IP.-h /tmp
unPGHOST
paramètre équivalent pour pointer vers le bon répertoire.la source
Cela fonctionne pour moi:
Edit: postgresql.conf
Activer ou ajouter:
Redémarrez le moteur de base de données:
En outre, vous pouvez vérifier le fichier
pg_hba.conf
Et ajoutez votre adresse réseau ou hôte:
la source
Vous pouvez utiliser
psql -U postgres -h localhost
pour forcer la connexion sur TCP plutôt que sur les sockets de domaine UNIX; votrenetstat
sortie montre que le serveur PostgreSQL écoute sur le port 5432 de localhost.Vous pouvez savoir quel socket UNIX local est utilisé par le serveur PostgrSQL en utilisant une invocation différente de netstat :
Dans tous les cas, les interfaces sur lesquelles le serveur PostgreSQL écoute sont configurées
postgresql.conf
.la source
Créez simplement un lien symbolique comme ceci:
la source
Je le fais fonctionner en faisant ceci:
Choisissez vos régions préférées puis exécutez
(9.5 est ma version de postgresql)
et puis ça marche!
la source
service postgresql restart
mais il indique que je n'ai pas de cluster postgresql. Ensuite, je trouve le moyen de m'aider :)dpkg-reconfigure locales
c'est sacrément important.J'ai dû compiler PostgreSQL 8.1 sur Debian Squeeze car j'utilise Project Open, basé sur OpenACS et ne fonctionnant pas sur les versions les plus récentes de PostgreSQL.
La configuration de compilation par défaut place l'entrée
unix_socket
dans/tmp
, mais Project Open, qui s'appuie sur PostgreSQL, ne fonctionnerait pas car il rechercheraitunix_socket
at/var/run/postgresql
.Un paramètre est défini
postgresql.conf
pour définir l'emplacement de la prise. Mon problème était que je pouvais me préparer/tmp
etpsql
travailler, mais pas pour un projet ouvert, ou je pouvais le faire pour/var/run/postgresql
etpsql
ne fonctionnerait pas, mais un projet ouvert le faisait.Une solution au problème consiste à définir le socket pour
/var/run/postgresql
, puis à l'exécuterpsql
, en fonction de la suggestion de Peter, comme suit:Ceci s'exécute localement en utilisant les autorisations locales. Le seul inconvénient est qu'il est plus typé que simplement "psql".
L’autre suggestion faite par quelqu'un était de créer un lien symbolique entre les deux lieux. Cela a également fonctionné, mais le lien a disparu au redémarrage. Il est peut-être plus facile d’utiliser simplement l’argument -h. Cependant, j’ai créé le lien symbolique à partir du script PostgreSQL de
/etc/init.d
. J'ai placé la commande de création de lien symbolique dans la section "démarrer". Bien sûr, lorsque j'émettrai une commande stop and start ou restart, elle essaiera de recréer un lien symbolique existant, mais à part le message d'avertissement, il n'y a probablement aucun mal à cela.Dans mon cas, au lieu de:
j'ai
et ont mis explicitement l'unix_socket à
/var/run/postgresql/.s.PGSQL.5432
enpostgresql.conf
.la source
Solution:
Faire ceci
et ça. ( 9.3 est ma version actuelle de PostgreSQL. Écris ta version!)
la source
Si votre service Postgres est opérationnel et fonctionne sans erreur ou s'il n'y a pas d'erreur lors du démarrage du service Postgres et que vous obtenez toujours l'erreur mentionnée, procédez comme suit.
Etape 1: Running listera
pg_lsclusters
tous les clusters postgres en cours d’exécution sur votre appareil.par exemple:
très probablement le statut sera en panne dans votre cas et le service postgres
Étape 2: redémarrez le pg_ctlcluster
Étape 3: échec de l'étape 2 et erreur renvoyée
Si ce processus n'aboutit pas, une erreur sera générée. Vous pouvez voir le journal des erreurs sur
/var/log/postgresql/postgresql-9.6-main.log
Mon erreur était:
Étape 4: vérifier la propriété de postgres
Assurez-vous que
postgres
c'est le propriétaire de/var/lib/postgresql/version_no/main
Sinon, lancez
Étape 5: Vérifiez que l'utilisateur postgres appartient au groupe d'utilisateurs ssl-cert
Il s'est avéré que j'avais supprimé par erreur l'utilisateur Postgres du
ssl-cert
groupe. Exécutez le code ci-dessous pour résoudre le problème du groupe d'utilisateurs et les autorisations.la source
Dans mon cas, cela est dû à une faute de frappe que j'ai faite lors de l'édition
/etc/postgresql/9.5/main/pg_hba.conf
J'ai changé:
à:
Mais
MD5
devait être en minusculemd5
:la source
trusted
lieu detrust
, je n'ai pas redémarré le service, et le jour suivant, le jour où j'ai déjà oublié ce que j'ai changéJ'ai trouvé que désinstaller Postgres ne semblait pas convaincant. Cela aide à résoudre mon problème:
Démarrez le serveur postgres:
Assurez-vous que le serveur démarre au démarrage:
Vous trouverez des informations détaillées sur le site DigitalOcean ici.
la source
J'ai échoué à résoudre ce problème avec mon serveur postgres-9.5. Après 3 jours de zéro progrès en essayant chaque permutation de correctif sur ce site et d'autres sites, j'ai décidé de réinstaller le serveur et de perdre 5 jours de travail. Mais, j'ai reproduit le problème sur la nouvelle instance. Cela pourrait donner une idée de la façon de régler le problème avant d'adopter l'approche catastrophique que j'ai adoptée.
Commencez par désactiver tous les paramètres de journalisation dans postgresql.conf. C'est la section:
Commentez tout dans cette section. Puis redémarrez le service.
Lors du redémarrage, utilisez
/etc/init.d/postgresql start
ourestart
j’ai trouvé utile d’être en mode superutilisateur lors du redémarrage. J'avais une x-window ouverte juste pour cette opération. Vous pouvez établir ce mode superutilisateur avecsudo -i
.Vérifiez que le serveur peut être atteint avec cette commande simple:
psql -l -U postgres
Si cela ne résout pas le problème, alors considérez ceci:
Je changeais de propriétaire sur plusieurs dossiers en essayant de trouver une solution. Je savais que j'essaierais probablement de rétablir ces propriétaires de dossier et
chmod
s encore 2 jours. Si vous avez déjà manipulé ces dossiers et que vous ne voulez pas purger complètement votre serveur, commencez à suivre les paramètres de tous les dossiers affectés pour les ramener à leur état d'origine. Vous voudrez peut-être essayer de faire une installation parallèle sur un autre système et vérifier systématiquement la propriété et les paramètres de tous les dossiers. Fastidieux, mais vous pourrez peut-être accéder à vos données.Une fois que vous y avez accès, modifiez systématiquement chaque ligne pertinente dans la
# ERROR REPORTING AND LOGGING
section dupostgresql.conf
fichier. Redémarrez et testez. J'ai constaté que le dossier par défaut des journaux entraînait un échec. J'ai spécifiquement commentélog_directory
. Le dossier par défaut dans lequel le système supprime les journaux est alors/var/log/postgresql
.la source
Cela est peut-être dû au fait que vous avez modifié les autorisations du
/var/lib/postgresql/9.3/main
dossier.Essayez de le changer en 700 en utilisant la commande ci-dessous:
la source
Depuis que j'utilise Flask, ce n'est pas vraiment lié à la question, mais c'était l'erreur exacte que je recevais et c'était le fil le plus pertinent pour obtenir des idées.
Ma configuration: sous-système Windows pour Linux, Docker-composition avec makefile avec dockerfile, Flask, Postgresql (en utilisant un schéma constitué de tableaux)
Pour vous connecter à postgres, configurez votre chaîne de connexion comme suit:
REMARQUE: je n'ai jamais obtenu d'adresse IP (par exemple, localhost, 127.0.0.1) pour utiliser une méthode quelconque dans ce fil. L'idée d'utiliser le nom du conteneur au lieu de localhost est venue d'ici: https://github.com/docker-library/postgres/issues/297
Définissez votre schéma:
Définissez votre chemin de recherche pour vos fonctions lorsque vous configurez votre session:
la source
J'ai eu exactement le même problème que Peter Eisentraut. En utilisant la
netstat -nlp | grep 5432
commande, je pouvais voir que le serveur écoutait sur socket/tmp/.s.PGSQL.5432
.Pour résoudre ce problème, modifiez simplement votre
postgresql.conf
fichier et modifiez les lignes suivantes:Maintenant, lancez
service postgresql-9.4 restart
(Remplacez 9-4 par votre version), et les connexions distantes devraient fonctionner maintenant.Maintenant, pour autoriser les connexions locales, créez simplement un lien symbolique vers le
/var/run/postgresql
répertoire.N'oubliez pas de vous assurer que votre
pg_hba.conf
est correctement configuré aussi.la source
Dans mon cas, tout ce que je devais faire était ceci:
puis
Cela a bien fonctionné. J'espère que ça aide. À votre santé :) .
la source
Trouvez votre fichier:
Résultat:
Connectez-vous en tant qu'utilisateur postgres:
la source
J'ai eu le même problème (sur Ubuntu 15.10 (astucieux)).
sudo find / -name 'pg_hba.conf' -print
ousudo find / -name 'postgresql.conf' -print
tourné vide. Avant cela, il semblait que plusieurs instances de postgresql avaient été installées.Vous pouvez avoir le même problème quand vous voyez en tant qu'installé, ou une liste de problèmes de dépendance
etc.
Dans ce cas, vous devez
sudo apt-get autoremove
chaque paquet 1 par 1.Ensuite, suivez ceci à la lettre et tout ira bien. Surtout quand il s'agit d'importer des clés et de les ajouter à la liste des sources FIRST
Si vous n’utilisez pas wily, remplacez-le
wily
par votre version, c’est-à-dire par la sortie delsb_release -cs
Et alors, vous devriez être en mesure de vous connecter et de créer des utilisateurs.
Production attendue:
Source de mes solutions (crédits)
la source
Tout en ayant le même problème, j'ai essayé quelque chose de différent:
En démarrant manuellement le démon postgresql, j’ai eu:
Donc , ce que je faisais était de fixer une limite inférieure pour
shared_buffers
etmax_connections
danspostgresql.conf
etrestart
le service.Cela a résolu le problème!
Voici le journal complet des erreurs:
la source
Après de nombreuses tentatives épuisantes, j'ai trouvé la solution à partir d'autres publications!
la source
Créez le répertoire postgresql dans run, puis exécutez la commande suivante.
la source
Ajoutez simplement / tmp unix_socket_directories
postgresql.conf
la source