web-dev-qa-db-de.com

PHP Verbindung fehlgeschlagen: SQLSTATE [HY000] [2002] Verbindung abgelehnt

Die Situation ist die, ich versuche, eine PHP -Verbindung zu verwenden, um meine MySQL-Datenbank zu verbinden, die sich auf phpmyadmin befindet. Es ist nichts Besonderes, wenn die Verbindung nur versucht, zu sehen, ob die Verbindung erfolgreich ist oder nicht. Ich verwende MAMP zum Hosten der Datenbank. Die Verbindung, die ich verwenden möchte, ist folgende: 

<?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();
}
?>

Ich habe Postman verwendet, um zu testen, ob die Verbindung funktioniert, aber ich erhalte weiterhin diese Fehlermeldung: 

Verbindung fehlgeschlagen: SQLSTATE [HY000] [2002] Verbindung abgelehnt

Bevor ich eine Fehlermeldung erhalten habe:

Verbindung fehlgeschlagen: SQLSTATE [HY000] [2002] Keine solche Datei oder Verzeichnis

Dies lag daran, dass ich den Servernamen auf localhost gesetzt hatte. Durch das Ändern dieser IP-Adresse wurde mir die Verbindung abgelehnt, und ich habe keine Ahnung, was falsch ist.

Jede Hilfe in dieser Hinsicht wäre dankbar, Danke.

28
Jack Smith

Ich fand den Grund, warum die Verbindung nicht funktionierte, weil die Verbindung versucht hatte, eine Verbindung zu Port 8888 herzustellen, als sie an Port 8889 angeschlossen werden musste.

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

Das Problem wurde behoben, obwohl der Servername in localhost geändert wurde und der Fehler immer noch auftritt.

Verbindung fehlgeschlagen: SQLSTATE [HY000] [2002] Keine solche Datei oder Verzeichnis

Es stellt jedoch eine erfolgreiche Verbindung her, wenn die IP-Adresse für den Servernamen eingegeben wird.

28
Jack Smith

Mit MAMP habe ich den Host=localhost bis Host=127.0.0.1. Aber ein neues Problem kam "Verbindung abgelehnt"

Gelöst durch Setzen von 'port' => '8889', im 'Datasources' => [

0
Quentin Vaisala

In meinem Fall wurde der MySQL-Server nicht ausgeführt. Ich habe den MySQL-Server neu gestartet und das Problem wurde behoben.

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

Um das MySQL-Stoppproblem zu vermeiden, können Sie das Dienstprogramm "initctl" in Ubuntu 14.04 LTS Linux verwenden, um sicherzustellen, dass der Dienst im Falle eines Ausfalls oder Neustarts neu gestartet wird. Bevor Sie diese Vorgänge zum Zwecke der Datenaufbewahrung [8] ausführen, sollten Sie eine Momentaufnahme des Root-Volumes (mit gestoppter Mysql) in Betracht ziehen. Sie können die folgenden Befehle verwenden, um den mysql-Dienst mit dem Dienstprogramm "initctl" mit Stopp- und Startoperationen zu verwalten.

$ Sudo initctl stop mysql
$ Sudo initctl start mysql

Um das Funktionieren zu überprüfen, können Sie den Status des Dienstes überprüfen und Die Prozess-ID (pid) abrufen, einen Fehler simulieren, indem Sie den Prozess "mysql" Abbrechen und dessen Status mit der neuen Prozess-ID prüfen irgendwann (normalerweise innerhalb einer Minute) mit den folgenden Befehlen.

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