mysqli_real_connect (): (HY000 / 2002): Keine solche Datei oder kein solches Verzeichnis

76
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.

luigi
quelle
Können Sie weitere Informationen geben?
Kevin Wallis

Antworten:

107

Ä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.

naiz0
quelle
6
Ich war froh, diese Antwort zu finden, um die Dinge zum Laufen zu bringen, aber was ist die wirkliche Lösung? Dies ist eine Problemumgehung. Sie sollten in der Lage sein zu verwenden localhost.
Nilpo
2
Sie würden so denken, aber anscheinend nicht. In Bezug auf die Einstellung "Verbindungstyp": "Veraltet seit Version 4.7.0: Diese Einstellung wird ab Version 4.7.0 nicht mehr verwendet, da MySQL den Verbindungstyp basierend auf dem Host festlegt, was zu unerwarteten Ergebnissen führen kann." Ref: docs.phpmyadmin.net/en/latest/config.html
unrein
Die "echte Lösung" besteht darin, die MySQL-Dokumentation zu lesen und zu verstehen, dann Ihre Konfigurationsdateien zu bearbeiten und ein System zu haben, in dem Sie wissen, was los ist, anstatt nur einigen Ratschlägen zu folgen und alles zu vergessen, sobald es funktioniert. Wenn Sie verwenden möchten, müssen localhostSie 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.
Bachsau
vielen Dank Alter. Ich war eine Weile damit beschäftigt. Wusste nicht, dass das Problem so klein ist.
Ashukid
21

Ich versuche das schon mal

cd /opt/lampp/phpmyadmin

Dann

gedit config.inc.php

Finde das

$cfg['Servers'][$i]['host'] = 

Wenn es etwas gibt, localhoständern Sie es auf127.0.0.1

Hinweis: Wenn '//' vorhanden ist, entfernen Sie // vorher $cfg['Servers'][$i]['host']

Ich habe noch einmal nachgesehen http://localhost/phpmyadmin/

Mysqli sagte:

"phpMyAdmin hat versucht, eine Verbindung zum MySQL-Server herzustellen, und der Server hat die Verbindung abgelehnt. 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."

Ich öffne wieder config.inc.phpund 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.

faruq ah
quelle
Sparen Sie mir viel Zeit
Dadan
1
Ab Oktober 2018 sollte der MAMP-Pfad /Applications/MAMP/bin/phpMyAdmin/config.inc.php sein . Es hat wie ein Zauber funktioniert :-)
ImFarhad
18

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.

Siraj Alam
quelle
13

Möglicherweise wurde Ihr SQL Server gestoppt

sudo /etc/init.d/mysql start

oder

sudo service mysqld start

und verwenden service mysql status, um den Status zu überprüfen

Abdulla Nilam
quelle
1
Service mysqld Neustart
GAV
Es hat bei mir funktioniert, aber die große Frage ist, warum es aufgehört hat. Weil ich das sehr oft bekomme.
COS
@Komi verwenden sudo systemctl enable mysql, um MySQL weiter auszuführen . Entschuldigung für die späte Antwort. Ich habe das komplett verpasst.
Abdulla Nilam
10

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.

  1. Suchen Sie Ihre config.inc.phpDatei, die sich auf PHPMyAdmin bezieht.
  2. Suchen Sie die Zeile, $cfg['Servers'][$i]['host']meistens wurde diese Zeile standardmäßig auskommentiert. Wenn ja, kommentieren Sie sie bitte aus.
  3. Und ersetzen Sie diese Zeile durch folgende:

$cfg['Servers'][$i]['host'] = '127.0.0.1';

  1. Speichern Sie es und starten Sie die MySQL-Datenbank über Ihr XAMPP-Kontrollfeld (manager-osx) neu.
  2. Ändern Sie Ihren $hostParameterwert in der mysqli_connect()Methode wie folgt:

$_connection = mysqli_connect(**"localhost: 3306"**, $_mysql_username, $_mysql_password, $_database);

Hinweis: Dies 3306ist 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_connectMethode 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!

Randika Vishman
quelle
6

Ich habe das Problem heute mit den folgenden Schritten behoben:

  1. Wenn config.inc.php nicht im Verzeichnis phpMyadmin vorhanden ist, kopieren Sie config.sample.inc.php nach config.inc.php.

  2. Socket hinzufügen zu /* Server parameters */

    $cfg['Servers'][$i]['socket'] = '/tmp/mysql.sock';
    
  3. 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. Geben Sie hier die Bildbeschreibung ein

Ketan Yekale
quelle
Auf jeden Fall die beste Antwort für MacOS-Benutzer!
Sebj
Während ich PHP und httpd verwendete, die von HOMEBREW installiert wurden, musste ich die alte Passwortverschlüsselung verwenden, damit es funktionierte, bevor ich natives PHP und httpd von Macos Catalina verwendete. Ich musste es nicht ändern. Als ich PHP und HTTPD von Homebrew neu installierte, verlor ich die Verbindung ... Danke für die Antwort
Sultanos
5

Stellen Sie zunächst sicher, dass der MySQL-Dienst ausgeführt wird:

ps elf|grep mysql

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.

AbelSurace
quelle
1

Ich war mit diesem Problem unter CentOS konfrontiert .

Zuerst versuche ich das

sudo service mysql restart

Dann wird ein Fehler angezeigt

Redirecting to /bin/systemctl restart mysql.service
Failed to restart mysql.service: Unit not found.

Dann fand ich diese

Befehl dies, um mein Problem zu lösen

systemctl start mariadb.service
Stephen Chen
quelle
0

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 losERROR (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.

Cyborg
quelle
0

Wenn Sie Mac OS und Brew verwendet haben, versuchen Sie Folgendes:

mkdir /usr/local/etc/my.cnf.d
grantDEV
quelle
0

Ich hatte das gleiche Problem. In meinem /etc/mysql/my.cnfwar kein Weg mehr zu mysqld.sockdefinieren. Also habe ich eine Suche gestartet, um es zu finden: find / -type s | grep mysqld.sockaber es konnte nicht gefunden werden. Ich habe apt install mysql-server-5.7mysql neu installiert mit: (Bitte überprüfen Sie, bevor Sie die aktuelle SQL-Server-Version ausführen).

Dies löste mein Problem.

lortschi
quelle
0
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.

Yogesh Wankhede
quelle
0

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:

sestatus

Erlauben Sie Apache, die Datenbank über SELinux zu verbinden

setsebool httpd_can_network_connect_db 1

Die -POption 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
Arafat Hasan
quelle
0

Unter Linux einfach machen

sudo systemctl stop mysql

sudo systemctl start mysql

arbeitete für mich

Abhiram Das
quelle
0

Versuchen Sie es einfach

sudo service mysql restart

Es hat bei mir funktioniert

demenvil
quelle
0

Wenn Sie Archlinux oder Ubuntu verwenden, geben Sie einfach die folgenden Befehle ein:

cd /opt/lampp/phpmyadmin

dann

sudo gedit config.inc.php

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:

cd /opt/lampp/phpmyadmin

dann

sudo gedit config.inc.php

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.

Lamech Desai
quelle
-1

Wenn die oben genannten Lösungen nicht funktionieren, versuchen Sie, den Standardwert von 3306 auf einen anderen zu ändern (z. B. 3307).

fsalazar_sch
quelle
-8

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.

Dann
quelle
Das hat nichts damit zu tun.
Paweł Tomkiel
Ihre Antwort hat nichts mit der Frage zu tun. Das Umbenennen von Protokolldateien hilft mysqli nicht, einen Socket oder eine Verbindung zum MySQL-Server zu finden. Wenn wir Ihre Antwort falsch verstanden haben, müssen Sie sie möglicherweise aktualisieren. Andernfalls ist es besser, diese Antwort zu löschen. Bitte lesen Sie die Anleitung zur Beantwortung .
AnthonyB