mysqli_real_connect(): (HY000/2002): No such file or directory
PhpMyAdmin-Fehler unter MacOS. Ich möchte eine Antwort Ich habe wirklich keine Ahnung, was ich tun muss, um dies zu lösen.
php
macos
mysqli
phpmyadmin
luigi
quelle
quelle
Antworten:
Ändern Sie localhost in /etc/phpmyadmin/config.inc.php in 127.0.0.1
$cfg['Servers'][$i]['host'] = '127.0.0.1';
Der Grund dafür ist, dass pma versucht, eine Verbindung zum mysql.socket herzustellen, wenn Sie localhost verwenden. Wenn Sie 127.0.0.1 verwenden, stellt PMA eine TCP-Verbindung her, die funktionieren sollte.
quelle
localhost
.localhost
Sie MySQL so konfigurieren, dass anstelle von TCP / IP ein Socket abgehört wird. Ich würde das immer empfehlen, wenn sich Ihre Datenbank auf demselben Computer befindet.Ich versuche das schon mal
Dann
Finde das
$cfg['Servers'][$i]['host'] =
Wenn es etwas gibt,
localhost
ändern Sie es auf127.0.0.1
Ich habe noch einmal nachgesehen
http://localhost/phpmyadmin/
Mysqli sagte:
Ich öffne wieder
config.inc.php
und ich habe gefunden$cfg['Servers'][$i]['password'] =
Füllen Sie das Passwort mit Ihrem Passwort
Es hat bei mir funktioniert. Es kann auch für Sie funktionieren.
quelle
Lokalisieren
config.sample.inc.php
Veränderung
$cfg['Servers'][$i]['host'] = 'localhost';
in
$cfg['Servers'][$i]['host'] = '127.0.0.1';
Sparen.
Benennen Sie dann die Datei um und entfernen Sie das Beispiel aus dem Namen.
quelle
Möglicherweise wurde Ihr SQL Server gestoppt
oder
und verwenden
service mysql status
, um den Status zu überprüfenquelle
sudo systemctl enable mysql
, um MySQL weiter auszuführen . Entschuldigung für die späte Antwort. Ich habe das komplett verpasst.mysqli_connect (): (HY000 / 2002): Keine solche Datei oder kein solches Verzeichnis
Hintergrund:
Ich wollte nur einige PHPUnit-Tests auf meinem Mac mit Terminal ausführen. Einige der Klassen, die ich testen wollte, mussten MySQL DB verbinden, das von PHPMyAdmin erstellt und verwaltet wurde, und die Web-App, an der ich arbeitete, funktionierte im localhost einwandfrei. Als ich diese Testfälle ausführte, wurde auf meinem Terminal der folgende Fehler angezeigt:
mysqli_connect(): (HY000/2002): No such file or directory
Lösung:
Mit dem Juckreiz musste ich es lösen und meinen Test ausführen. Ich suchte in einigen SO Q & A-Threads und probierte es aus. Und eine Kombination von Änderungen hat bei mir funktioniert.
config.inc.php
Datei, die sich auf PHPMyAdmin bezieht.$cfg['Servers'][$i]['host']
meistens wurde diese Zeile standardmäßig auskommentiert. Wenn ja, kommentieren Sie sie bitte aus.$cfg['Servers'][$i]['host'] = '127.0.0.1';
$host
Parameterwert in dermysqli_connect()
Methode wie folgt:$_connection = mysqli_connect(**"localhost: 3306"**, $_mysql_username, $_mysql_password, $_database);
Hinweis: Dies
3306
ist meine MySQL-Portnummer, die die Standardeinstellung ist. Sie sollten besser überprüfen, wie Ihre tatsächliche MySQL-Portnummer lautet, bevor Sie diese Schritte ausführen.Und das ist alles. Für mich haben nur diese Schritte funktioniert und sonst nichts. Ich habe meine Unit-Tests ausgeführt und es funktioniert einwandfrei. Die DB-Daten wurden gemäß den Tests ebenfalls ordnungsgemäß aktualisiert.
Warum das funktioniert:
Der nächste Grund, den ich hätte finden können, ist, dass es funktioniert, da die
mysqli_connect
Methode manchmal einen funktionierenden Socket (IP-Adresse des DB-Hosts zusammen mit der Portnummer) der Datenbank erfordert. Wenn Sie also die$cfg['Servers'][$i]['host'] = '127.0.0.1';
Zeile auskommentiert oder 'localhost' als Wert festgelegt haben, wird die Portnummer ignoriert. Wenn Sie jedoch einen Socket verwenden möchten, müssen Sie '127.0.0.1' oder den tatsächlichen Hostnamen verwenden. (Für mich scheint es unabhängig von der Standardportnummer zu sein, die wir wirklich haben, wir müssen die obigen Schritte ausführen .) Lesen Sie den folgenden Link von PHPMyAdmin für weitere Details.Hoffe, das könnte jemand anderem da draußen helfen.
Prost!
quelle
Ich habe das Problem heute mit den folgenden Schritten behoben:
Wenn config.inc.php nicht im Verzeichnis phpMyadmin vorhanden ist, kopieren Sie config.sample.inc.php nach config.inc.php.
Socket hinzufügen zu
/* Server parameters */
$cfg['Servers'][$i]['socket'] = '/tmp/mysql.sock';
Speichern Sie die Datei und greifen Sie über die URL auf phpmyadmin zu.
Wenn Sie MySQL 8.0.12 verwenden, sollten Sie die Legacy-Passwortverschlüsselung verwenden, da die starke Verschlüsselung vom PHP-Client nicht unterstützt wird.
quelle
Stellen Sie zunächst sicher, dass der MySQL-Dienst ausgeführt wird:
Sie sehen eine Ausgabe wie diese, wenn sie ausgeführt wird:
4 S root 9642 1 0 80 0 - 2859 do_wai 23:08 pts/0 00:00:00 /bin/sh /usr/bin/mysqld_safe --datadir=/var/lib/mysql --pid-file=/var/lib/mysql/tomcat-machine.local.pid 4 S mysql 9716 9642 0 80 0 - 200986 poll_s 23:08 pts/0 00:00:00 /usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib64/mysql/plugin --user=mysql --log-error=/var/lib/mysql/tomcat-machine.local.err --pid-file=/var/lib/mysql/tomcat-machine.local.pid
Ändern Sie dann localhost in config.inc.php in 127.0.0.1
$cfg['Servers'][$i]['host'] = '127.0.0.1';
Das Standardkennwort für den Benutzer "root" ist leer. Geben Sie nichts für das Kennwort ein
Wenn kein leeres Passwort zulässig ist, müssen Sie die Datei config.inc.php erneut bearbeiten und Folgendes ändern:
$cfg['Servers'][$i]['AllowNoPassword'] = true;
Das Problem ist eine Kombination aus Konfigurationseinstellungen und nicht ausgeführtem MySQL. Dies hat mir geholfen, diesen Fehler zu beheben.
quelle
Ich war mit diesem Problem unter CentOS konfrontiert .
Zuerst versuche ich das
Dann wird ein Fehler angezeigt
Dann fand ich diese
Befehl dies, um mein Problem zu lösen
quelle
Wenn Ihre Website einwandfrei lief und jetzt unerwarteter FEHLER :
(HY000/2002): No such file or directory
Dann sollten Sie KEINE Konfigurationsdatei ÄNDERN!
Überprüfen Sie zuerst die Datei error.log des Servers. Nginx befindet sich dort:
/var/log/nginx/error.log
Oder für Apache versuchen:
/var/log/apache2/error_log
In meinem Fall konnte ich PHP Fatal error: OUT OF MEMORY in error.log für nginx sehen.
Die Lösung: Fügen Sie dem Server mehr RAM hinzu.
Ich habe zuerst versucht, den Webserver neu zu starten, bevor ich RAM aktualisiert / hinzugefügt habe. Dann wurde ich los
ERROR (HY000/2002) but got some ERROR 50X: Connection Error...
Zu diesem Zeitpunkt habe ich 2 GB RAM hinzugefügt, den Webserver neu gestartet und alles hat einwandfrei funktioniert!
Als der Webserver hochgefahren war, bemerkte ich, dass mehr als 200 Cron-Jobs aufgrund eines Schleifenfehlers in 1 PHP-Skript stecken blieben.
Überprüfen Sie also, welches Skript Speicher belegt.
quelle
Wenn Sie Mac OS und Brew verwendet haben, versuchen Sie Folgendes:
quelle
Ich hatte das gleiche Problem. In meinem
/etc/mysql/my.cnf
war kein Weg mehr zumysqld.sock
definieren. Also habe ich eine Suche gestartet, um es zu finden:find / -type s | grep mysqld.sock
aber es konnte nicht gefunden werden. Ich habeapt install mysql-server-5.7
mysql neu installiert mit: (Bitte überprüfen Sie, bevor Sie die aktuelle SQL-Server-Version ausführen).Dies löste mein Problem.
quelle
mysqli_connect(): (HY000/2002): No such file or directory
Ich hatte das gleiche Problem mit debian9 VM. Ich habe versucht, MySQL neu zu starten, aber es hat das Problem nicht gelöst. Danach habe ich den Arbeitsspeicher vergrößert (ich wurde reduziert) und es hat funktioniert.
quelle
Wenn Sie SELinux verwenden, überprüfen Sie dies.
Ich hatte das gleiche Problem. Ich habe CentOS 8 mit SELinux-Durchsetzung ausgeführt und den in der Frage (
mysqli_real_connect(): (HY000/2002): No such file or directory
) genannten Fehler erhalten, obwohl alle Konfigurationen korrekt behoben wurden. Ich hatte später keine Probleme mehr, nachdem ich MySQL-Verbindungen über SELinux zugelassen hatte.Überprüfen Sie den SELinux-Status mit diesem Befehl:
Erlauben Sie Apache, die Datenbank über SELinux zu verbinden
setsebool httpd_can_network_connect_db 1
Die
-P
Option Verwenden macht die Änderung dauerhaft. Ohne diese Option würde der Boolesche Wert beim Neustart auf 0 zurückgesetzt.setsebool -P httpd_can_network_connect_db 1
quelle
Unter Linux einfach machen
arbeitete für mich
quelle
Versuchen Sie es einfach
Es hat bei mir funktioniert
quelle
Wenn Sie Archlinux oder Ubuntu verwenden, geben Sie einfach die folgenden Befehle ein:
dann
Wenn Sie dann auf die Datei zugreifen, suchen Sie nach den folgenden Skripten:
//$cfg['Servers'][$i]['host'] ='localhost'
Entfernen Sie '//', damit es wie unten gezeigt bleibt:
$cfg['Servers'][$i]['host'] ='localhost'
Ändern Sie dann den ' localhost ' in ' 127.0.0.1 ' und das Skript sollte sich wie folgt drehen:
$cfg['Servers'][$i]['host'] ='127.0.0.1'
Kehren Sie zu Ihrem Browser zurück und geben Sie http://127.0.0.1/phpmyadmin/ ein.
Wenn es immer noch ablehnt
Sie sollten den Host, den Benutzernamen und das Kennwort in Ihrer Konfiguration überprüfen und sicherstellen, dass sie den vom Administrator des MySQL-Servers angegebenen Informationen entsprechen.
Kehren Sie dann zu derselben Datei config.inc.php zurück, die Sie bearbeitet haben, und gehen Sie wie folgt vor:
dann
Suche nach dem Skript unten
$cfg['Servers'][$i]['password'] =''
Füllen Sie das Passwort mit Ihrem Root-Passwort
$cfg['Servers'][$i]['password'] ='your_password'
Und es sollte funktionieren.
quelle
Wenn die oben genannten Lösungen nicht funktionieren, versuchen Sie, den Standardwert von 3306 auf einen anderen zu ändern (z. B. 3307).
quelle
Sie müssen nur ib_logfile0 und ib_logfile1 in ib_logfile_0 und ib_logfile_1 umbenennen. Dann wäre Ihr Problem gelöst.
quelle