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.sock
unter dem /var/mysql
Verzeichnis.
In habe /etc/my.cnf
ich:
[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.ini
ich:
; 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 --sockets
bekomme
--socket [/tmp/mysql.sock]
/var/log/mysql
oder irgendwo in der Nähe ), was darauf hinweist, warum es nicht ausgeführt wird? Erhalten Sie eine Fehlermeldung, wenn Sie versuchen, sie zu starten?service mysqld start
Sie ein, wenn Sie gerade installiert haben. hthsudo service mysql start
hat mich gerettetAntworten:
Wenn Ihre Datei my.cnf (normalerweise im Ordner / etc / mysql / ) korrekt mit konfiguriert ist
Sie können mit dem folgenden Befehl überprüfen, ob MySQL ausgeführt wird:
Versuchen Sie, Ihre Berechtigung in den Ordner "MySQL" zu ändern. Wenn Sie lokal arbeiten, können Sie versuchen:
das hat es für mich gelöst
quelle
mysqld
Dienst neu gestartet habe .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:
Aktivieren Sie den MySQL-Dienst:
Starten Sie den MySQL-Server:
Legen Sie anschließend das MySQL-Root-Passwort fest:
Ich hoffe, es hilft.
quelle
brew install mysql
sudo apt-get install mysql-server
Leben gut warCan'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).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.
quelle
localhost
und trotzdem127.0.0.1
abgerufen, bevor überhaupt versucht wird, eine Verbindung herzustellen?Ich habe den folgenden Fehler erhalten
Versuchte mehrere Wege und löste es schließlich auf folgende Weise
geändert
zu
und neu gestartet
es funktionierte
quelle
localhost
es zu beheben.Stellen Sie sicher, dass Sie mysqld ausführen:
/etc/init.d/mysql start
quelle
sudo service mysql start|restart
für Ubuntu.Um das Auftreten des Problems zu verhindern, müssen Sie den Server ordnungsgemäß über die Befehlszeile herunterfahren, anstatt den Server auszuschalten.
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:
Durch einen Neustart des Dienstes wird ein neuer Eintrag mit dem Namen mqsql.sock erstellt
quelle
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:
Denken Sie daran, dass -h Host bedeutet , -P Port bedeutet und -p Passwort bedeutet.
quelle
-p
bedeutet nicht Port , es bedeutet Passwort , Sie haben es verwechselt mit-P
mysql -h 127.0.0.1 -u root -p
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 Dateigrep
anmelden, möchten Sie wahrscheinlich MySQL-Nachrichten undtail
nur 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.
quelle
.cnf
. Das erklärt es. Jetzt kann ich aufhören, zufällige Dinge auszuprobieren, und das eigentliche Problem ansprechen. Vielen Dank.Eine andere Problemumgehung besteht darin, /etc/my.cnf zu bearbeiten und den Host in den Abschnitt [client] aufzunehmen.
Und dann den MySQL-Dienst neu starten.
Diese Problemumgehung wurde getestet in: Serverversion: 5.5.25a-log Quelldistribution
quelle
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:
quelle
mysql
lief nicht. Ich binsudo service mysql start
nach dem Laufen gelaufensudo service mysql status
, um zu überprüfen, ob es nicht läuft.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:
Also ... dummer Fehler.
quelle
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:
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.
quelle
versuchen Sie es mit -h (Host) und -P (Port):
mysql -h 127.0.0.1 -P 3306 -u root -p
quelle
Dies sollte Ihnen gut dienen. Möglicherweise haben Sie einige Befehle geändert, die sich auf die MySQL-Konfigurationen auswirken.
quelle
systemctl start mariadb.service
in Fedora 22 oder RedHat 7. Danach ist es möglich, das Root-Passwort festzulegen.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.
quelle
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.
quelle
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 (wo
mydatabase
sind die Datenbanken, die Sie haben)?Eigentum
mysql:mysql
:Eigentum
mysql:root
:Eigentum
mysql:adm
:quelle
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.
quelle
Wenn Sie die Micro-Version von AWS (Amazon Web Services) verwenden, liegt ein Speicherproblem vor. Als ich rannte
vom Terminal würde es sagen
Also habe ich folgendes versucht und es würde einfach scheitern.
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.
quelle
Sie können den MySQL-Server jederzeit starten, indem Sie den Speicherort der Datei mysql.sock mit der
--socket
Option like angebenDies funktioniert auch dann, wenn der Speicherort der Socket-Datei an einem anderen Speicherort in der Datei my.cnf angegeben ist.
quelle
Versuchen Sie für diejenigen, deren Lösung nicht funktioniert hat:
Überprüfen Sie, ob my.cnf vorhanden ist
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 nano
und 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.quelle
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:
Ich hatte einen Fehler, der auftauchte:
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.log
Datei, die ich hatte: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_logfile0
und/var/lib/mysql/ib_logfile1
Dateien 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:
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).
Alles scheint jetzt wie erwartet zu funktionieren.
quelle
/var/log/mysql/error.log
hat in meinem Fall geholfen. Es gab eine,[ERROR] Can't init tc log
die mit der folgenden Antwort schnell behoben wurde: dba.stackexchange.com/a/185006/163583Hinzufügen
zur Liste der Kinderwagen in Ihrer Verbindung arbeitete für mich.
quelle
Das war gut genug für mich
quelle
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:
Dies wurde teilweise durch die folgenden Fehler in /var/log/mysql/error.log angezeigt:
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).
quelle
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
yum
ich entferntmariadb
und 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 status
und das Ergebnis erhalten.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.
quelle
Ich habe für mich gearbeitet und benutze Centos
quelle
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 :
Daher müssen Sie Ihren Hostnamen auf den oben hervorgehobenen Wert aktualisieren.
quelle
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
quelle
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/
quelle