Es kann keine Verbindung zum lokalen MySQL-Server über den Socket '/var/mysql/mysql.sock' hergestellt werden (38).

385

Ich habe ein großes Problem beim Versuch, eine Verbindung zu MySQL herzustellen. Wenn ich renne:

/usr/local/mysql/bin/mysql start

Ich habe folgenden Fehler:

Can't connect to local MySQL server through socket '/var/mysql/mysql.sock' (38)

Ich habe mysql.sockunter dem /var/mysqlVerzeichnis.

In habe /etc/my.cnfich:

[client]
port=3306
socket=/var/mysql/mysql.sock

[mysqld]
port=3306
socket=/var/mysql/mysql.sock
key_buffer_size=16M
max_allowed_packet=8M

und in habe /etc/php.iniich:

; Default socket name for local MySQL connects.  If empty, uses the built-in
; MySQL defaults.
mysql.default_socket = /var/mysql/mysql.sock

Ich habe Apache mit neu gestartet sudo /opt/local/apache2/bin/apachectl restart

Aber ich habe immer noch den Fehler.

Ansonsten weiß ich nicht, ob das relevant ist, aber wann ich es mysql_config --socketsbekomme

--socket         [/tmp/mysql.sock]
Lambivist
quelle
53
Läuft MySQL?
David
2
Das erklärt sicherlich den Fehler beim Versuch, eine Verbindung herzustellen. Wie gibt es, wie @Romain erwähnte, irgendetwas in den MySQL-Protokollen (versuchen Sie es /var/log/mysqloder irgendwo in der Nähe ), was darauf hinweist, warum es nicht ausgeführt wird? Erhalten Sie eine Fehlermeldung, wenn Sie versuchen, sie zu starten?
David
5
Ich habe den gleichen Fehler erhalten, aber in meinem Fall habe ich herausgefunden, dass MySQL nicht gestartet werden kann, da die Festplatte zu 100% voll ist. /var/log/mysqld.log war hilfreich.
Yellavon
4
Der Grund, warum sie fragen, ob es ausgeführt wird, ist vermutlich, dass der Socket hergestellt wird, wenn der Dienst gestartet wird. Ich habe MySQL installiert, aber den Dienst nie gestartet, sodass die Sock-Datei nicht vorhanden ist. Geben service mysqld startSie ein, wenn Sie gerade installiert haben. hth
changokun
2
Unten Antwort von Shimanyi sudo service mysql starthat mich gerettet
Kiren Siva

Antworten:

218

Wenn Ihre Datei my.cnf (normalerweise im Ordner / etc / mysql / ) korrekt mit konfiguriert ist

socket=/var/lib/mysql/mysql.sock

Sie können mit dem folgenden Befehl überprüfen, ob MySQL ausgeführt wird:

mysqladmin -u root -p status

Versuchen Sie, Ihre Berechtigung in den Ordner "MySQL" zu ändern. Wenn Sie lokal arbeiten, können Sie versuchen:

sudo chmod -R 755 /var/lib/mysql/

das hat es für mich gelöst

Marimaf
quelle
11
Es hat mir geholfen, nachdem ich die obigen Schritte ausgeführt und den mysqldDienst neu gestartet habe .
Whirlwin
11
Es ist am besten, wenn Sie die Berechtigungen auf 755 festlegen, damit nur der Verzeichnisbesitzer darauf schreiben kann.
Codewaggle
2
Mein Problem war eigentlich nur, dass mein Speichervolumen für meine Web-App nicht mehr genügend Speicherplatz hatte! Klassisch!
James T Snell
3
Auf meinem openSUSE 12.3 befindet sich my.cnf in / etc /.
Wir sollten auch die Erlaubnis in /var/log/mysqld.log ändern. Danke
Allahbakash.G
94

Sind Sie sicher, dass Sie sowohl MySQL als auch MySQL Server installiert haben?

Zum Beispiel, um den MySQL-Server zu installieren, verwende ich yum oder apt, um sowohl das MySQL-Befehlszeilentool als auch den Server zu installieren:

yum -y install mysql mysql-server (or apt-get install mysql mysql-server)

Aktivieren Sie den MySQL-Dienst:

/sbin/chkconfig mysqld on

Starten Sie den MySQL-Server:

/sbin/service mysqld start

Legen Sie anschließend das MySQL-Root-Passwort fest:

mysqladmin -u root password 'new-password' (with the quotes)

Ich hoffe, es hilft.

Waqas
quelle
Ich habe Homebrew benutzt und es hat wie ein Zauber brew install mysql
funktioniert
2
Ich hatte den Client bereits installiert, der Befehl, den ich brauchte, war, dass das sudo apt-get install mysql-serverLeben gut war
ErichBSchulz
1
Ist die Ausgabe nicht Can't connect to local MySQL server through socket '/var/mysql/mysql.sock' (38) vom Client? Es ist der Client, der versucht und keine Verbindung herstellt, oder? (Ich denke, die ursprüngliche Frage muss bearbeitet werden, um dies zu klären).
msouth
76

Eine schnelle Problemumgehung, die für mich funktioniert hat: Versuchen Sie, die lokale IP-Adresse (127.0.0.1) anstelle von 'localhost' in mysql_connect () zu verwenden. Dies "zwingt" PHP, eine Verbindung über TCP / IP anstelle eines Unix-Sockets herzustellen.

Maurizio
quelle
Es hat funktioniert ... aber warum? Wird MySQL nicht aufgelöst localhostund trotzdem 127.0.0.1abgerufen, bevor überhaupt versucht wird, eine Verbindung herzustellen?
Jaime Hablutzel
3
Nein ... wenn Sie localhost verwenden, verwenden Sie keinen Internet-Socket. Sie verwenden einen IPC-Socket. en.wikipedia.org/wiki/Unix_domain_socket . 127.0.0.1 ist ein lokaler Loopback, was bedeutet, dass die Anforderung Ihren Computer nicht beendet, aber TCP / IP verwendet und somit langsamer ist ...
Master Yogurt
Funktioniert auch bei mir. Ich bin auf Ubuntu 14.04, HHVM und Nginx.
Maykonn
1
Vielen Dank. Das funktioniert für mich, aber es ist mir aus der Antwort nicht klar, was das
Problem
Dies ist auch erforderlich, wenn Sie über einen SSH-Tunnel eine Verbindung zum Remote-Server herstellen
Tamm
51

Ich habe den folgenden Fehler erhalten

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (111)

Versuchte mehrere Wege und löste es schließlich auf folgende Weise

sudo gksu gedit /etc/mysql/my.cnf

geändert

#bind-address       = 127.0.0.1

zu

bind-address        = localhost

und neu gestartet

sudo /etc/init.d/mysql restart

es funktionierte

AnupRaj
quelle
Ich hatte ein ähnliches Problem. wechselte von Ethernet (192.168.220.11) zu WLAN (192.168.220.12), hatte aber eine fest auf Ethernet-IP codierte Bindungsadresse. Ändern, um localhostes zu beheben.
Chris G
30

Stellen Sie sicher, dass Sie mysqld ausführen: /etc/init.d/mysql start

Zorayr
quelle
3
Oder sudo service mysql start|restartfür Ubuntu.
Wtower
18

Um das Auftreten des Problems zu verhindern, müssen Sie den Server ordnungsgemäß über die Befehlszeile herunterfahren, anstatt den Server auszuschalten.

shutdown -h now

Dadurch werden die laufenden Dienste gestoppt, bevor der Computer ausgeschaltet wird.

Basierend auf Centos besteht eine zusätzliche Methode, um es wieder herzustellen, wenn Sie auf dieses Problem stoßen, darin, mysql.sock zu verschieben:

mv /var/lib/mysql/mysql.sock /var/lib/mysql/mysql.sock.bak

service mysqld start

Durch einen Neustart des Dienstes wird ein neuer Eintrag mit dem Namen mqsql.sock erstellt

Ali Hashemi
quelle
14

Ich habe diesen Fehler erhalten, als ich den Cron-Job für meine Datei festgelegt habe. Ich habe die Berechtigungen der Datei in 777 geändert, aber es hat bei mir immer noch nicht funktioniert. Endlich habe ich die Lösung. Vielleicht ist es hilfreich für andere.

Versuchen Sie es mit diesem Befehl:

mysql -h 127.0.0.1 -P 3306 -u root -p

Denken Sie daran, dass -h Host bedeutet , -P Port bedeutet und -p Passwort bedeutet.

Doulat Khan
quelle
Das Erzwingen einer Verbindung über TCP / IP anstelle eines Sockets ist ineffizient (und erfordert, dass Sie die TCP / IP-Unterstützung für lokale Hosts auf dem Server gemäß dieser früheren Antwort aktivieren ). Die akzeptierte Antwort aus dem Jahr 2011 ist besser: Konfigurieren Sie den Server so, dass Sie einen Socket ordnungsgemäß verwenden können.
Quentin
10
-pbedeutet nicht Port , es bedeutet Passwort , Sie haben es verwechselt mit-P
Quentin
Dies scheint mehr oder weniger eine Kopie dieser früheren Antwort zu sein
Quentin
Für mich ging es nur darum, den richtigen Host zu definieren: mysql -h 127.0.0.1 -u root -p
kghbln
12

Wie aus den vielen Antworten hier hervorgeht, gibt es viele Probleme, die zu dieser Fehlermeldung führen können, wenn Sie den MySQL-Dienst starten. Die Sache ist, MySQL wird Ihnen im Allgemeinen genau sagen, was falsch ist, wenn Sie nur in die entsprechende Protokolldatei schauen.

Unter Ubuntu sollten Sie dies beispielsweise überprüfen /var/log/syslog. Da sich möglicherweise auch viele andere Dinge in dieser Datei grepanmelden, möchten Sie wahrscheinlich MySQL-Nachrichten und tailnur die neuesten Nachrichten anzeigen . Alles in allem könnte das so aussehen:

grep mysql /var/log/syslog | tail -50

Nehmen Sie nicht blind Änderungen an Ihrer Konfiguration vor, da jemand anderes sagte: "Dies hat für mein System funktioniert." Finden Sie heraus, was mit Ihrem System tatsächlich nicht stimmt, und Sie erhalten viel schneller ein besseres Ergebnis.

matt2000
quelle
5
+1 Um einen Schritt zurückzutreten und auf etwas hinzuweisen, das viele der anderen Antworten nicht einmal berücksichtigen - ist es viel besser, tatsächlich zu sehen, was die Anwendung als Problem gemeldet hat, als blindlings einzusteigen und Änderungen vorzunehmen, die dies möglicherweise nicht tun sogar anwendbar sein ...!
SlySven
Ah, also benutzt es das Falsche .cnf. Das erklärt es. Jetzt kann ich aufhören, zufällige Dinge auszuprobieren, und das eigentliche Problem ansprechen. Vielen Dank.
Synetech
11

Eine andere Problemumgehung besteht darin, /etc/my.cnf zu bearbeiten und den Host in den Abschnitt [client] aufzunehmen.

 [client]
 #password       = your_password
 host            = 127.0.0.1
 port            = 3306
 socket          = /var/run/mysql/mysql.sock

Und dann den MySQL-Dienst neu starten.

Diese Problemumgehung wurde getestet in: Serverversion: 5.5.25a-log Quelldistribution

der Schatten
quelle
Das Hinzufügen des Abschnitts [client] wird empfohlen, wenn nicht bereits in my.cnf
Cris
7

Ich hatte das gleiche Problem und es wurde durch ein Update der MySQL-Treiber verursacht, als der MySQL-Server ausgeführt wurde. Ich habe das Problem behoben, indem ich sowohl MySQL als auch Apache2 neu gestartet habe:

sudo service mysql stop

sudo service mysql start

sudo service apache2 stop

sudo service apache2 start

Fustaki
quelle
In meinem Fall mysqllief nicht. Ich bin sudo service mysql startnach dem Laufen gelaufen sudo service mysql status, um zu überprüfen, ob es nicht läuft.
Tass
6

In meinem Fall habe ich Centos 5.5 verwendet. Ich fand, dass das Problem war, weil der MySQL-Dienst irgendwie gestoppt wurde. Also habe ich den MySQL-Dienst mit dem folgenden Befehl gestartet:

 /etc/init.d/mysqld start

Also ... dummer Fehler.

Shyamkkhadka
quelle
6

Wenn alles einwandfrei funktioniert hat und Sie diesen Fehler gerade gesehen haben, stellen Sie sicher, dass Sie nicht über genügend Speicherplatz verfügen, bevor Sie etwas anderes tun:

df -h

Wenn das Volume, auf dem mysql.sock erstellt wird, zu 100% verwendet wird, kann MySql es nicht erstellen, und dies ist die Ursache für diesen Fehler. Sie müssen lediglich etwas löschen, das nicht benötigt wird, z. B. alte Protokolldateien.

Derek Gogol
quelle
6

versuchen Sie es mit -h (Host) und -P (Port):

mysql -h 127.0.0.1 -P 3306 -u root -p

Ramil Mammadov
quelle
5
sudo service mysql start

Dies sollte Ihnen gut dienen. Möglicherweise haben Sie einige Befehle geändert, die sich auf die MySQL-Konfigurationen auswirken.

Shimanyi
quelle
oder systemctl start mariadb.servicein Fedora 22 oder RedHat 7. Danach ist es möglich, das Root-Passwort festzulegen.
Junior Mayhé
5

Es gibt viele Lösungen für dieses Problem, aber für meine Situation musste ich nur das DATUM auf dem Computer / Server ( Ubuntu 16.04 Server) korrigieren ) .

i) Überprüfen Sie das Datum Ihres Servers und korrigieren Sie es.

ii) Ausführen sudo /etc/init.d/mysql restart

Damit sollte es losgehen.

Huey Mataruse
quelle
4

Ich habe den Fehler erhalten, weil ich MAMP ausgeführt habe und meine .sock-Datei sich an einem anderen Speicherort befand. Ich habe gerade einen symbolischen Link hinzugefügt, bei dem die App dachte, es sollte so sein, dass er darauf hinweist, wo er sich tatsächlich befindet, und es hat wie ein Zauber funktioniert.

Devin Henkel-Legare
quelle
Wie kann ein symbolischer Link hinzugefügt werden, bei dem die App dachte, dass er so sein sollte, dass er darauf verweist, wo er tatsächlich war?
Gilberto Ibarra
4

Ich fand auch, dass dies ein Berechtigungsproblem war. Ich habe die MySQL-Dateien mit einer funktionierenden Installation verglichen (beide unter Debian 6 Squeeze) und musste die folgenden Eigentümeränderungen vornehmen (womydatabase sind die Datenbanken, die Sie haben)?

Eigentum mysql:mysql:

chown mysql:mysql /var/lib/mysql
chown mysql:mysql /var/lib/mysql/ib*
chown mysql:mysql /var/lib/mysql/mydatabase
chown mysql:mysql /var/lib/mysql/mydatabase/*
chown mysql:mysql /var/lib/mysql/mysql/* 

Eigentum mysql:root:

chown mysql:root /var/lib/mysql/mysql
chown mysql:root /var/run/mysqld 

Eigentum mysql:adm:

chown mysql:adm /var/log/mysql
chown mysql:adm /var/log/mysql.err
chown mysql:adm /var/log/mysql.log* 
SharpC
quelle
4

Für mich war dies einfach ein Fall, bei dem das Laden von MySQL lange dauerte. Ich habe über 100.000 Tabellen in einer meiner Datenbanken und es hat irgendwann angefangen, muss aber in diesem Fall natürlich lange dauern.

Antonius
quelle
3

Wenn Sie die Micro-Version von AWS (Amazon Web Services) verwenden, liegt ein Speicherproblem vor. Als ich rannte

mysql

vom Terminal würde es sagen

ERROR 2002 (HY000): Can't connect to local MySQL server through socket /var/run/mysqld/mysqld.sock' (111)

Also habe ich folgendes versucht und es würde einfach scheitern.

service mysqld restart

Nach langem Suchen stellte ich fest, dass Sie eine Auslagerungsdatei erstellen müssen, damit MySQL über genügend Speicher verfügt. Anweisungen sind aufgeführt: http://www.prowebdev.us/2012/05/amazon-ec2-linux-micro-swap-space.html .

Dann konnte ich mysqld neu starten.

jth_92
quelle
Ich hatte das gleiche Problem auf der "Mikro" -Instanz des AWS-Servers und kann bestätigen, dass die Auslagerungsdatei den "FEHLER 2002 (HY000)" behoben hat: Es kann keine Verbindung zum lokalen MySQL-Server über Socket / var / run / mysqld / mysqld hergestellt werden .sock '(111) "Problem. Vielen Dank @ jth_92!
Konaras
3

Sie können den MySQL-Server jederzeit starten, indem Sie den Speicherort der Datei mysql.sock mit der --socketOption like angeben

mysql --socket=/var/mysql/mysql.sock 

Dies funktioniert auch dann, wenn der Speicherort der Socket-Datei an einem anderen Speicherort in der Datei my.cnf angegeben ist.

David Okwii
quelle
3

Versuchen Sie für diejenigen, deren Lösung nicht funktioniert hat:

cd /etc/mysql

Überprüfen Sie, ob my.cnf vorhanden ist

nano my.cnf

und stellen Sie sicher, dass Sie nur eine Bindungsadresse wie folgt haben:

Bindungsadresse = 127.0.0.1

Wenn nicht, könnte dies das Problem sein. Beenden Sie einfach nano und speichern Sie die Datei.

und service mysql start

Wenn Sie kein Nano haben (es ist ein Texteditor), installieren Sie es einfach mit apt-get install nanound drücken Sie einmal Strg + X, um das Programm zu beenden. Vergessen Sie nicht, Y zu sagen, um dieselbe Datei zu speichern und zu verwenden.

Jack M.
quelle
Leider hat das nicht funktioniert. Dies bedeutet im Grunde nur, dass nur der lokale Computer auf MySQL zugreifen kann. Keine Remoteverbindungen.
Stephen
3

Ich hatte dieses Problem auch beim Versuch, den Server zu starten, so viele der Antworten hier, die nur sagen, dass der Server gestartet werden soll, haben nicht funktioniert. Als erstes können Sie Folgendes ausführen, um festzustellen, ob Konfigurationsfehler vorliegen:

/usr/sbin/mysqld --verbose --help 1>/dev/null

Ich hatte einen Fehler, der auftauchte:

160816 19:24:33 [Note] /usr/sbin/mysqld (mysqld 5.5.50-0ubuntu0.14.04.1-log) starting as process 9461 ...
160816 19:24:33 [Warning] Using unique option prefix myisam-recover instead of myisam-recover-options is deprecated and will be removed in a future release. Please use the full name instead.
160816 19:24:33 [Note] Plugin 'FEDERATED' is disabled.
160816 19:24:33 [ERROR] /usr/sbin/mysqld: unknown variable 'innodb-online-alter-log-max-size=4294967296'
160816 19:24:33 [ERROR] Aborting

Eine einfache grep -HR "innodb-online-alter-log-max-size" /etc/mysql/ zeigte mir genau, welche Datei die fehlerhafte Zeile enthielt, also entfernte ich diese Zeile aus der Datei.

Dann überprüfte ich meine /var/log/mysql/error.logDatei, die ich hatte:

InnoDB: Error: log file ./ib_logfile0 is of different size 0 5242880 bytes
InnoDB: than specified in the .cnf file 0 671088640 bytes!
160816 22:46:46 [ERROR] Plugin 'InnoDB' init function returned error.
160816 22:46:46 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
160816 22:46:46 [ERROR] Unknown/unsupported storage engine: InnoDB
160816 22:46:46 [ERROR] Aborting

Aufgrund dieser Frage würde die akzeptierte Lösung nicht funktionieren, da ich den Server nicht einmal starten konnte. Deshalb habe ich einige der Kommentare befolgt und meine /var/lib/mysql/ib_logfile0und /var/lib/mysql/ib_logfile1Dateien gelöscht .

Dadurch konnte der Server gestartet werden und ich konnte eine Verbindung herstellen und Abfragen ausführen. Bei der Überprüfung meiner Fehlerprotokolldatei wurde diese jedoch schnell mit mehreren Zehntausenden Zeilen wie folgt gefüllt:

160816 22:52:15  InnoDB: Error: page 1415 log sequence number 82039318708
InnoDB: is in the future! Current system log sequence number 81640793100.
InnoDB: Your database may be corrupt or you may have copied the InnoDB
InnoDB: tablespace but not the InnoDB log files. See
InnoDB: http://dev.mysql.com/doc/refman/5.5/en/forcing-innodb-recovery.html
InnoDB: for more information.

Basierend auf einem Vorschlag von hier habe ich, um dies zu beheben, einen mysqldump durchgeführt und alle Datenbanken wiederhergestellt (siehe den Link für mehrere andere Lösungen).

$ mysqldump -u root -p --allow-keywords --add-drop-database --comments --hex-blob --opt --quote-names --databases db_1 db_2 db_3 db_etc > backup-all-databases.sql
$ mysql -u root -p < backup-all-databases.sql

Alles scheint jetzt wie erwartet zu funktionieren.

Mike
quelle
Überprüfung /var/log/mysql/error.loghat in meinem Fall geholfen. Es gab eine, [ERROR] Can't init tc logdie mit der folgenden Antwort schnell behoben wurde: dba.stackexchange.com/a/185006/163583
Juraj.Lorinc
2

Hinzufügen

--protocol=tcp 

zur Liste der Kinderwagen in Ihrer Verbindung arbeitete für mich.

barryred
quelle
2

Das war gut genug für mich

sudo /etc/init.d/mysql restart
Vikram
quelle
2

Ich bin heute auf dieses Problem gestoßen. Keine dieser Antworten lieferte die Lösung. Ich musste die folgenden Befehle ausführen (hier https://stackoverflow.com/a/20141146/633107 ), damit mein MySQL-Dienst gestartet werden konnte:

sudo /etc/init.d/mysql stop
cd /var/lib/mysql/
ls ib_logfile*
mv ib_logfile0 ib_logfile0.bak
mv ib_logfile1 ib_logfile1.bak
... etc ...
/etc/init.d/mysql restart

Dies wurde teilweise durch die folgenden Fehler in /var/log/mysql/error.log angezeigt:

140319 11:58:21 InnoDB: Completed initialization of buffer pool
InnoDB: Error: log file ./ib_logfile0 is of different size 0 50331648 bytes
InnoDB: than specified in the .cnf file 0 5242880 bytes!
140319 11:58:21 [ERROR] Plugin 'InnoDB' init function returned error.
140319 11:58:21 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
140319 11:58:21 [ERROR] Unknown/unsupported storage engine: InnoDB
140319 11:58:21 [ERROR] Aborting

Ich habe auch den Fehler "Festplatte voll" gesehen, aber nur, wenn Befehle ohne sudo ausgeführt wurden. Wenn die Berechtigungsprüfung fehlschlägt, wird die Festplatte als voll gemeldet (auch wenn Ihre Partition nicht annähernd voll ist).

Splaktar
quelle
2

CentOS 7, 64 Bit. Neuinstallation.
In meinem Fall lag der Fehler darin, dass ich nicht den richtigen MySQL-Server und MySQL-Client installiert hatte.
Mit habe yumich entfernt mariadbund mysql-community edition. Ich habe die RPMs für den Client und den Server von der offiziellen MySQL-Website heruntergeladen und den Server und den Client installiert.

Bei der Installation des Servers wurde die Meldung angezeigt, dass das Kennwort für das Root-Konto für MySQL in einer Datei gespeichert war, mit der ich es anzeigen konnte sudo cat /root/.mysql_secret.

Nach der Installation von Client und Server habe ich mit dem Befehl überprüft, ob MySQL funktioniert (ich glaube, ich habe vorher einen Neustart durchgeführt), sudo service mysql statusund das Ergebnis erhalten.

MySQL läuft (2601) [OK]

Ich habe mich mit dem Passwort aus der Datei .mysql_secret bei MySQL angemeldet :
mysql -uroot -pdxM01Xfg3DXEPabpf. Beachten Sie, dassdxM01Xfg3DXEPabpf das in der Datei .mysql_secret angegebene Kennwort ist.

und dann tippte den folgenden Befehl an der MySQL-Eingabeaufforderung ein, um das Passwort von root zu ändern:

mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('somePassword');

Von da an hat alles gut funktioniert.

Nav
quelle
1
Gleicher Fall bei RHEL6U6 mit Serverversion: 5.6.23-Enterprise-Commercial-Advanced.
Die HCD
2
sudo service mysqld start

Ich habe für mich gearbeitet und benutze Centos

Ikuchris
quelle
2

Dies beantwortet Ihre Frage nicht direkt, sondern eine Teilmenge davon, nämlich die Verwendung von PythonAnywhere. Ich bin immer wieder auf diese Frage gestoßen, als ich nach einer Lösung gesucht habe, also füge ich sie hier hinzu, in der Hoffnung, dass sie anderen in meiner Situation helfen wird.


PythonAnywhere entschieden , die Datenbankverbindung Host - Namen zu ändern , um die Effizienz und die Zuverlässigkeit zu verbessern, wie hier detailliert beschrieben :

Der offizielle Hostname, den Sie für die Verbindung mit der MySQL-Datenbankinstanz Ihres Kontos verwenden sollten, wurde von mysql.server in yourusername .mysql.pythonanywhere-services.com geändert . Dies umgeht einen Teil unserer Infrastruktur, bei dem in den letzten Wochen Probleme aufgetreten sind, und sie sollte viel effizienter und zuverlässiger sein als bisher.

Daher müssen Sie Ihren Hostnamen auf den oben hervorgehobenen Wert aktualisieren.

Vlad Schnakovszki
quelle
2

Ich hatte gerade dieses Problem. Nach einem Tag der Überprüfung habe ich endlich die Antwort erhalten, dass die Datei mysql.sock beim Start von MariaDB erstellt und beim Herunterfahren von MariaDB entfernt wird. Es wird nicht existieren, wenn MariaDB nicht läuft. Vielleicht haben Sie MariaDB nicht installiert. SIE KÖNNEN DIE ANWEISUNG UNTEN BEFOLGEN: https://www.linode.com/docs/databases/mariadb/how-to-install-mariadb-on-centos-7 BEST

jsina
quelle
1

Ich hatte diesen Socket-Fehler und es kam im Grunde darauf an, dass MySQL nicht lief. Wenn Sie eine Neuinstallation ausführen, stellen Sie sicher, dass Sie 1) das Systempaket und 2) das Panel-Installationsprogramm (mysql.prefPane) installieren. Mit dem Panel-Installationsprogramm können Sie zu Ihren Systemeinstellungen wechseln, MySQL öffnen und dann eine Instanz ausführen.

Beachten Sie, dass ich bei einer Neuinstallation meinen Computer zurücksetzen musste, damit die Änderungen ordnungsgemäß wirksam werden. Nach einem Neustart wurde eine neue Instanz ausgeführt und konnte problemlos eine Verbindung zu localhost herstellen.

Bemerkenswert ist auch, dass ich anscheinend frühere Versionen von MySQL installiert hatte, aber das Panel entfernt hatte, was es einfach macht, eine Instanz von MySQL für Mac-Benutzer zum Laufen zu bringen.

Ein guter Link für diesen Prozess der Neuinstallation: http://www.coolestguyplanettech.com/how-to-install-php-mysql-apache-on-os-x-10-6/

Tandy
quelle