Warnung: mysqli_connect(): (HY000/2002): Keine solche Datei oder Verzeichnis

Lesezeit: 4 Minuten

Warnung mysqli connect HY0002002 Keine solche Datei oder Verzeichnis
kramer65

Ich versuche, Vanilla-Foren auf meinem Mac zu installieren, und dafür habe ich gerade eine Datenbank und einen Benutzer über die MySQL-Befehlszeile erstellt:

mysql> CREATE DATABASE vanilla;
Query OK, 1 row affected (0.00 sec)

mysql> create user 'vanilla_user3'@'localhost' IDENTIFIED BY 'vanilla_password';
Query OK, 0 rows affected (0.00 sec)

mysql> GRANT ALL PRIVILEGES ON * . * TO 'vanilla_user3'@'localhost';
Query OK, 0 rows affected (0.00 sec)

mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)

Also versuche ich mich mit folgendem Code zu verbinden:

$con=mysqli_connect("localhost","vanilla_user3","vanilla_password","vanilla");
if (mysqli_connect_errno($con)) {
  echo "Failed to connect to MySQL: " . mysqli_connect_error();
}

aber leider bekomme ich eine Fehlermeldung

Warnung: mysqli_connect(): (HY000/2002): Keine solche Datei oder kein solches Verzeichnis in /Users/kramer65/Sites/vanilla/info.php in Zeile 3 Verbindung zu MySQL fehlgeschlagen: Keine solche Datei oder dieses Verzeichnis

Irgendeine Idee, wo ich falsch liege?

Warnung mysqli connect HY0002002 Keine solche Datei oder Verzeichnis
kramer65

Okay, ich habe gerade die Lösung gefunden. Das Problem stellte sich heraus, dass der Host nicht hätte sein sollen localhostaber 127.0.0.1. Ich dachte immer localhost und 127.0.0.1 war das gleiche, aber es stellte sich heraus, dass es anders war.

Also vielleicht als Tipp für zukünftige Benutzer, verwenden Sie im Zweifelsfall immer die IP.

  • Die Antwort von mohitmayank ist richtig. Wenn localhost nicht funktioniert, müssen Sie PHP mitteilen, wo Ihre MySQL-Socket-Datei zu finden ist.

    – Nilpo

    18. März 2017 um 1:21 Uhr

  • siehe meinen Kommentar zu #Adams Antwort vom 21. November 2016

    – Jack Holt

    25. April 2017 um 20:39 Uhr

  • Ähnliches Problem, aber einfacher: Wenn MySQL nicht startet, kann dies denselben Fehler verursachen. Der Server des Clients wurde seit Monaten nicht neu gestartet, nach dem Neustart lief mysql nicht und niemand dachte daran, dies zu überprüfen. Zu besorgt über die ganze Codebasis und “wer diesen Fehler verursacht hat”. lol (Nur weil Apache aktiv ist und Sie per ssh auf den Server zugreifen können, ist das keine Garantie dafür, dass MySQL auch aktiv ist)

    – TheSatinKnight

    16. Juni 2018 um 2:29 Uhr


  • @TheSatinKnight Ich beobachte denselben Fehler auch alle paar Monate, was mit dem zusammenzuhängen scheint, was Sie sagen, da der MySQL-Server genau in diesem Moment vorübergehend nicht verfügbar ist.

    – Envajo

    11. März 2019 um 6:55 Uhr

Ich hatte das gleiche Problem, aber das Problem war etwas verwandt php.ini Datei.

Ich musste diese beiden Zeilen bearbeiten /etc/php.ini (oder wo auch immer dein php.ini befindet sich):

mysql.default_socket = /tmp/mysql.sock
mysqli.default_socket = /tmp/mysql.sock

Starten Sie den Apache-Server neu, um sicherzustellen, dass die Änderungen übernommen werden.

sudo apachectl restart

  • Dies ist die richtige Antwort für die Verwendung von Socket anstelle von TCP/IP.

    – Yuda Prawira

    5. September 2017 um 17:33 Uhr

  • mysql.sock befand sich für mich unter /var/run/mysqld/mysqld.sock’

    – Agnel Vishal

    8. November 2018 um 14:16 Uhr

  • Befolgen Sie dies, indem Sie die Anweisungen hier für Mac-Benutzer verwenden stackoverflow.com/questions/4219970/…

    – Sharron Denice

    12. April 2019 um 1:56 Uhr

Angenommen, Ihr MAMP-MySQL-Port ist wie standardmäßig auf 8889 eingestellt. Manchmal localhost allein reicht nicht aus, in diesem Fall müssen Sie auch den MySQL-Port einfügen, damit Sie dies tun würden localhost:8889 oder localhost:{whatever your MySQL port number is}. Ich bin noch neu bei MySQL, also kenne ich den Grund nicht, aber für alle da draußen, die kürzlich die Nachricht erhalten haben: Warning: mysqli::mysqli(): (HY000/2002): No such file or directory in ... Das Hinzufügen der MySQL-Portnummer zu localhost war die Lösung für mich.

  • Was ich als Fehler betrachte, muss localhost tatsächlich den Port (auch wenn es der Standardwert von 3306 ist) im $host-Parameter hinzugefügt werden, aber kein anderer Hostname tut dies. Sie würden also “localhost:3306” für den $host-Parameter verwenden. Andere Hostnamen und IP-Adressen verwenden den $port-Parameter. Aber der Parameter $port wird ignoriert, wenn $host ‘localhost’ ist. Ich glaube, das Problem geht auf etwas im PHPdoc für __construct() zurück: “Wenn möglich, werden Pipes anstelle des TCP/IP-Protokolls verwendet”.

    – Jack Holt

    25. April 2017 um 20:31 Uhr


Wenn Sie Docker verwenden, verwenden Sie den mysql-Containernamen als Hostnamen von mysql. Wenn dies beispielsweise die Docker-Compose-Datei ist:

mysqldb:
    image: mysql:5.7.22
    container_name: mysqlHost
    ports:
        - "33099:3306"

Hostname wird sein mysqlHost und Hafen werden 3306 und nicht 33099!

Wenn Sie Docker Compose nicht verwenden, docker ps zeigt die laufenden Containernamen an.

Warnung mysqli connect HY0002002 Keine solche Datei oder Verzeichnis
Andreas Njuki

finden php.ini Datei in /opt/lampp/etc/
dann bearbeiten:

mysql.default_socket = /tmp/mysql.sock
mysqli.default_socket = /tmp/mysql.sock

Danach ändern Sie in Ihrer DB-Verbindungsdatei von localhost zu 127.0.0.1. alles wird gut. jedoch, wenn Sie das versuchten config.inc.php Datei, vergewissern Sie sich, dass alles auf eingestellt ist 127.0.0.1nicht localhost.

1646313253 703 Warnung mysqli connect HY0002002 Keine solche Datei oder Verzeichnis
Dharman

Port im Host setzen:

$con = mysqli_connect("localhost:**3306**","vanilla_user3","vanilla_password","vanilla");

923740cookie-checkWarnung: mysqli_connect(): (HY000/2002): Keine solche Datei oder Verzeichnis

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy