PHP-verbinding mislukt: SQLSTATE[HY000] [2002] Verbinding geweigerd

Ik probeer een PHP-verbinding te gebruiken om verbinding te maken met MySQL-database die op phpmyadmin staat. Niets bijzonders aan de verbinding, gewoon proberen te zien of de verbinding succesvol is of niet. Ik gebruik MAMP om de database te hosten, de verbinding die ik probeer te gebruiken is deze:

<?php
$servername = "127.0.0.1";
$username = "root";
$password = "root";
try {
    $conn = new PDO("mysql:host=$servername;dbname=AppDatabase", $username, $password);
    // set the PDO error mode to exception
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    echo "Connected successfully"; 
}
catch(PDOException $e)
{
    echo "Connection failed: " . $e->getMessage();
}
?>

Ik heb de postbode gebruikt om te testen of de verbinding werkt, maar ik krijg steeds deze foutmelding:

Verbinding mislukt: SQLSTATE[HY000] [2002] Verbinding geweigerd

Voordat ik een foutmelding kreeg van:

Verbinding mislukt: SQLSTATE[HY000] [2002] Geen bestand of map

Dit was omdat ik de servernaam had ingesteld op localhost, door dit te veranderen in het IP-adres dat het me heeft gegeven, de verbinding is geweigerd en ik heb geen idee wat er mis is.

Alle hulp hierbij wordt op prijs gesteld.


Antwoord 1, autoriteit 100%

Ik heb de reden gevonden waarom de verbinding niet werkte, het was omdat de verbinding probeerde verbinding te maken met poort 8888, terwijl deze verbinding moest maken met poort 8889.

$conn = new PDO("mysql:host=$servername;port=8889;dbname=AppDatabase", $username, $password); 

Dit loste het probleem op, hoewel het veranderen van de servernaam in localhost nog steeds de fout geeft.

Verbinding mislukt: SQLSTATE[HY000] [2002] Geen bestand of map

Maar het maakt verbinding met succes wanneer het IP-adres is ingevoerd voor de servernaam.


Antwoord 2, autoriteit 14%

In mijn geval was de MySQL-server niet actief. Ik heb de MySQL-server opnieuw opgestart en het probleem is opgelost.

//on ubuntu server
sudo /etc/init.d/mysql start

Om MySQL-stopproblemen te voorkomen, kunt u het hulpprogramma “initctl” in Ubuntu 14.04 LTS Linux gebruiken om ervoor te zorgen dat de service opnieuw wordt opgestart in geval van een storing of opnieuw opstarten. Overweeg een momentopname van het rootvolume te praten (met mysql gestopt) voordat u deze bewerkingen uitvoert voor het bewaren van gegevens[8]. U kunt de volgende opdrachten gebruiken om de mysql-service te beheren met het hulpprogramma “initctl” met stop- en startbewerkingen.

$ sudo initctl stop mysql
$ sudo initctl start mysql

Om de werking te verifiëren, kunt u de status van de service controleren en krijgen
de proces-ID (pid), simuleer een storing door de “mysql” te doden
proces en verifieer de status als actief met nieuwe proces-ID na
soms (meestal binnen 1 minuut) met behulp van de volgende opdrachten.

$ sudo initctl status mysql         # get pid
$ sudo kill -9 <pid>                # kill mysql process
$ sudo initctl status mysql         # verify status as running after sometime

Opmerking: in de nieuwste Ubuntu-versie is nu initctl vervangen door systemctl


Antwoord 3, autoriteit 5%

Met MAMP heb ik de host=localhostgewijzigd in host=127.0.0.1. Maar er kwam een nieuw probleem “verbinding geweigerd”

Dit is opgelost door 'port' => '8889', in 'Datasources' => [


Antwoord 4, autoriteit 2%

Met MAMP OP Mac los ik mijn probleem op door de naam te wijzigen

/Applications/MAMP/tmp/mysql/mysql.sock.lock

naar

/Applications/MAMP/tmp/mysql/mysql.sock

Antwoord 5

Voor mij was de php-versie van mac in plaats van MAMP, de PATH-variabele op .bash_profile was verkeerd. Ik voeg gewoon de map MAMP PHP bin toe aan de $PATH env-variabele. Voor mij was:

/Applications/mampstack-7.1.21-0/php/bin
  1. Voer in terminal vim ~/.bash_profileuit om ~/.bash_profile

  2. te openen

  3. Typ i om het bestand te kunnen bewerken, voeg de bin-map als PATH-variabele bovenaan toe aan het bestand:

    PATH=”/Applications/mampstack-7.1.21-0/php/bin/:$PATH”

  4. exporteren

  5. Druk op ESC, typ :wqen druk op Enter

  6. Voer in Terminal source ~/.bash_profile
  7. uit

  8. In Terminal type which php, moet de uitvoer het pad zijn naar de MAMP PHP-installatie.

Antwoord 6

1. vlag servercertificaat verifiëren

Ik moest SSL gebruiken om verbinding te maken, en ik moest PDO::MYSQL_ATTR_SSL_VERIFY_SERVER_CERTinstellen op false in de new PDOoptions array, naast de invoer PDO::MYSQL_ATTR_SSL_CAvoor het CA-bestand.

Zonder dit vermeldt het mysql-logboek op de server nuttig

2021-07-27 17:02:51 597605 [Warning] Aborted connection 597605 to db: 'unconnected' user: 'unauthenticated' host: '192.168.10.123' (This connection closed normally without authentication)

waar ik zeker de juiste db en gebruikersnaam en dergelijke in de DSN doorgaf. Een lege array met opties zalin ieder geval de db en gebruiker in het foutenlogboek tonen. Ik weet zeker dat er een geldige, technische reden is voor deze dingen.
Ik voeg deze informatie toe zodat ik deze de volgende keer dat ik op deze pagina beland gemakkelijker kan vinden.

2. host in verbindingsreeks

In de context van SSL heb ik ook de fout gezien bij het gebruik van het IP-adres in plaats van de hostnaam om verbinding te maken, als de hostnaam werd gebruikt als CN (algemene naam) in het certificaat.


Antwoord 7

Voor iedereen die nog steeds worstelt met Verbinding weigeren, hier is mijn advies. Download XAMPP of een andere soortgelijke sw en start gewoon MySQL. U hoeft geen apache of andere dingen te gebruiken, alleen de MySQL.

Other episodes