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?
- De geïnstalleerde versie van Postgres is 9.4.
- Host-besturingssysteem: Ubuntu 15.04
- Clientbesturingssysteem: Centos 7
Ik heb het volgende al geprobeerd, maar het probleem is nog steeds niet opgelost:
- Bewerkt
pg_hba.conf
bestand om
. op te nemen
host alle alle 0.0.0.0/0 md5
- ‘postgresql.conf’ bewerkt en de luisterparameter gewijzigd in
listen_addresses=’*’
- Postgres-service opnieuw gestart.
- Firewall en iptables uitgeschakeld op host en client.
- Ik heb het gecontroleerd door het psql-commando lokaal uit te voeren en het werkte.
- Ik heb de tweede oplossing geprobeerd die in deze vraagwordt gegeven. Het uitvoeren van
nmap
gaf 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 5433
in 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 nano
gebruikt, maar je kunt de editor van je keuze gebruiken, en hoewel ik versie 9.1
heb 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.conf
en 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.conf
enpg_hba.conf
bestand 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/ start
gebruikt, zullen de postgresql.conf
en pg_hba.conf
op /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.