“psql: kan geen verbinding maken met server: verbinding geweigerd” Fout bij verbinding met externe database

Ik probeer verbinding te maken met een postgres-database die op een externe server is geïnstalleerd met het volgende commando:

psql -h host_ip-U db_username-d db_name

Dit is de fout die optreedt:

psql: kon geen verbinding maken met server: verbinding geweigerd
Draait de server op host “” en accepteert
TCP/IP-verbindingen op poort 5432?

  1. De geïnstalleerde versie van Postgres is 9.4.
  2. Host-besturingssysteem: Ubuntu 15.04
  3. Clientbesturingssysteem: Centos 7

Ik heb het volgende al geprobeerd, maar het probleem is nog steeds niet opgelost:

  1. Bewerkt pg_hba.confbestand om
  2. . op te nemen

host alle alle 0.0.0.0/0 md5

  1. ‘postgresql.conf’ bewerkt en de luisterparameter gewijzigd in

listen_addresses=’*’

  1. Postgres-service opnieuw gestart.
  2. Firewall en iptables uitgeschakeld op host en client.
  3. Ik heb het gecontroleerd door het psql-commando lokaal uit te voeren en het werkte.
  4. Ik heb de tweede oplossing geprobeerd die in deze vraagwordt gegeven. Het uitvoeren van nmapgaf me de volgende uitvoer:

Starting Nmap 6.47 ( http://nmap.org ) at 2015-09-07 18:08 IST
Nmap scan report for 10.17.250.250
Host is up (0.0000040s latency).
Not shown: 997 closed ports
PORT STATE SERVICE
22/tcp open ssh
25/tcp open smtp
80/tcp open http

Mis ik iets. Ik hoop dat iemand kan helpen.


Antwoord 1, autoriteit 100%

cd /etc/postgresql/9.x/main/

bestand openen met de naam postgresql.conf

sudo vi postgresql.conf

voeg deze regel toe aan dat bestand

listen_addresses = '*'

open vervolgens het bestand met de naam pg_hba.conf

sudo vi pg_hba.conf

en voeg deze regel toe aan dat bestand

host  all  all 0.0.0.0/0 md5

Het geeft alle gebruikers toegang tot alle databases met een versleuteld wachtwoord

start je server opnieuw

sudo /etc/init.d/postgresql restart

Antwoord 2, autoriteit 18%

Controleer de poort gedefinieerd in postgresql.conf. Mijn installatie van postgres 9.4 gebruikt poort 5433in plaats van 5432


Antwoord 3, autoriteit 5%

Ik heb hier moeite mee gehad toen ik op afstand verbinding probeerde te maken met een nieuwe PostgreSQL-installatie op mijn Raspberry Pi. Hier is het volledige overzicht van wat ik heb gedaan om dit probleem op te lossen:

Open eerst het PostgreSQL-configuratiebestand en zorg ervoor dat de service buiten localhost gaat luisteren.

sudo [editor] /etc/postgresql/[version]/main/postgresql.conf

Ik heb nanogebruikt, maar je kunt de editor van je keuze gebruiken, en hoewel ik versie 9.1heb geïnstalleerd, is die map voor elke versie die je hebt geïnstalleerd.

Zoek naar beneden naar het gedeelte met de titel ‘Verbindingen en authenticatie’. De eerste instelling moet 'listen_addresses'zijn en kan er als volgt uitzien:

#listen_addresses = 'localhost'     # what IP address(es) to listen on;

De opmerkingen aan de rechterkant geven goede instructies voor het wijzigen van dit veld, en het gebruik van de voorgestelde '*'voor iedereen zal goed werken.

Houd er rekening mee dat dit veld wordt uitgecommentarieerd met #. Volgens de opmerkingen zal het standaard ‘localhost’ zijn, dus alleen het wijzigen van de waarde in '*'is niet genoeg, je moet ook de instelling ongedaan maken door de leidende #.

Het zou er nu zo uit moeten zien:

listen_addresses = '*'         # what IP address(es) to listen on;

U kunt ook de volgende instelling, ‘poort’, controleren om er zeker van te zijn dat u correct verbinding maakt. 5432 is de standaard en is de poort waarmee psql zal proberen verbinding te maken als u er geen opgeeft.

Sla het bestand op en sluit het, open vervolgens het configuratiebestand voor clientverificatie, dat zich in dezelfde map bevindt:

sudo [editor] /etc/postgresql/[version]/main/pg_hba.conf

Ik raad aan het bestand te lezen als je de toegang wilt beperken, maar voor standaard open verbindingen spring je naar de onderkant van het bestand en voeg je een regel als deze toe:

host all all all md5

Je kunt desgewenst op tab drukken in plaats van op spatie om de velden op één lijn te brengen met de bestaande kolommen.

Persoonlijk heb ik in plaats daarvan een rij toegevoegd die er als volgt uitzag:

host [database_name] pi 192.168.1.0/24 md5

Hiermee beperkt dit de verbinding met slechts de ene gebruiker en slechts de ene database op het Subnet van het Local Area Network.

Nadat u wijzigingen in het bestand hebt opgeslagen, moet u de service opnieuw opstarten om de wijzigingen te implementeren.

sudo service postgresql restart

Nu kunt u controleren of de service openlijk in de juiste poort luistert met behulp van de volgende opdracht:

sudo netstat -ltpn

Als u het niet uitvoert als verhoogd (met sudo) vertelt het u niet de namen van de processen die op die poorten luisteren.

Een van de processen moet postGres zijn en het lokale adres moet open zijn (0.0.0.0) en niet alleen beperkt tot lokaal verkeer (127.0.0.1). Als het niet open is, moet u uw configuratie-bestanden verdubbelen en de service opnieuw opstarten. U kunt opnieuw bevestigen dat de service in de juiste poort luistert (standaard is 5432, maar uw configuratie kan anders zijn).

Eindelijk kunt u met succes verbinding maken met een externe computer met behulp van de opdracht:

psql -h [server ip address] -p [port number, optional if 5432] -U [postgres user name] [database name]

Antwoord 4, Autoriteit 5%

Controleer of de instellingen correct worden toegepast in het Config-bestand.

vim /etc/postgresql/x.x/main/postgresql.conf

Probeer het volgende om de logs te bekijken en uw probleem te vinden.

tail /var/log/postgresql/postgresql-x.x-main.log

Antwoord 5, autoriteit 2%

De mijne was vrij eenvoudig als je op een Mac werkt, probeer:

brew install postgres

Dit zal u vertellen of u het al hebt geïnstalleerd en welke versie of installeer de nieuwste versie voor u, zo niet, voer dan uit

brew upgrade postgresql

Zo weet je zeker dat je de laatste versie hebt geïnstalleerd en dan eindelijk

brew services start postgresql

Hiermee wordt de service opnieuw gestart. Ik hoop dat dit iemand helpt.


Antwoord 6

Volgens de configuratie moet u het volgende instellen:

Om poort 5432 te openen, bewerkt u uw /etc/postgresql/9.1/main/postgresql.confen wijzigt u

# Connection Settings -
listen_addresses = '*'          # what IP address(es) to listen on;

In /etc/postgresql/10/main/pg_hba.conf

# IPv4 local connections:
host    all             all             0.0.0.0/0           md5

Herstart nu uw DBMS

sudo service postgresql restart

Je kunt nu verbinding maken met

psql -h hostname(IP) -p port -U username -d database

Antwoord 7

Ik denk dat je de machinenaam gebruikt in plaats van het ip van de host.

Ik kreeg dezelfde fout toen ik probeerde met de naam van de machine. Omdat het alleen is toegestaan als zowel de client als de host zich in hetzelfde netwerk bevinden en hetzelfde besturingssysteem hebben geïnstalleerd.


Antwoord 8

Het volgende heeft me geholpen op macos Mojave:

$sudo mv /usr/local/var/postgres /usr/local/var/postgres.save
$brew uninstall postgres
$brew install postgres

Antwoord 9

Bekijk de poort en breng een poortwijziging aan in postgresql.conf. Mijn installatie van postgres 9.4 gebruikt poort 5431 of 5434 in plaats van 5432.
Als er staat dat de poort in gebruik is, verander dan de poort.
En controleer of je een wachtwoord opgeeft in de psql-installatie, dus geef het wachtwoord op in het bestand en sla het op.


Antwoord 10

Een andere situatie,postgresql.confenpg_hba.confbestand niet te vinden op /etc/postgresql/9.1/main/.Omdat postgres kan beginnen op elke locatie die u instelt.

Als u bijvoorbeeld het commando pg_ctl -D /tmp/pgsql/ startgebruikt, zullen de postgresql.confen pg_hba.confop /tmp/pgsql/.


Antwoord 11

In mijn geval heb ik het standaardbeveiligingsbeleid van Azure niet gewijzigd in de beheerportal. Het origineel is poort 22 toegestaan en de rest is allemaal geweigerd. Zolang ik 5432-poort toevoeg, wordt alles goed.


Antwoord 12

Ik had exact hetzelfde probleem, met de juiste configuratiebestanden. In mijn geval komt het probleem van de Eduroam wifi die ik gebruikte: als ik verbinding maak via een andere wifi, werkt alles. Het lijkt erop dat Eduroam poort 5432 blokkeert, althans op mijn universiteit.


Antwoord 13

In mijn geval had ik een landinstelling verwijderd en een andere landinstelling gegenereerd. Database kan niet worden geopend vanwege fatale fouten in het bestand postgresql.conf, op ‘lc_messages’, ‘lc_monetary’, ‘lc_numberic’ en ‘lc_time’.

Het herstellen van de landinstelling heeft het voor mij opgelost.


Antwoord 14

Probeer uw database te migreren. Als je bijvoorbeeld Heroku gebruikt om je project en met Django te hosten, probeer dan de opdracht heroku run python manage.py migrate; de fout zou moeten verdwijnen.


Antwoord 15

Ik had een probleem als dit waarbij ik naar een server moest sshten en vervolgens een query moest uitvoeren in de psql-console, dus de query was in een script, maar elke keer dat ik deze fout kreeg, werd psql niet gevonden, dus wat ik deed was gewoon de psql toegevoegd volledige pad uit de prullenbak die we krijgen van cat .bash_profile en het is klaar

PATH=$PATH:/usr/local/pgsql/bin:/usr/local/mysql/bin

Dus ik heb de hele /usr/local/mysql/bin/psql toegevoegd in plaats van alleen psql voor uitvoering op afstand.

Other episodes