MySQL startet nicht!

12

Ich erhalte diesen Fehler, wenn ich versuche, mich über die Befehlszeile bei MySQL anzumelden:

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

Ich denke, dies bedeutet, dass MySQL noch nicht gestartet wurde. Also versuche ich es zu starten:

sudo /etc/init.d/mysql start

und ich bekomme diese Nachricht:

* Starting MySQL database server mysqld [fail] 

Wo schaue ich hin / was mache ich, damit MySQL startet? Ich verwende Ubuntu 8.04 und installiere MySQL über apt-get. Ich konnte es ein paar Mal starten und verwenden, daher weiß ich nicht, warum es einfach nicht mehr funktioniert.

Update: Beim Ausführen des Status sudo /etc/init.d/mysql wird folgende Meldung angezeigt:

* MySQL is stopped.

Update Nr. 2: Meine Protokolldateien (/var/log/mysql.log & /var/log/mysql.err) sind leer (wenn dies die richtigen sind)

Andrew
quelle
Was passiert, wenn Sie sudo /etc/init.d/mysql Status
Emgee

Antworten:

10

Unter Ubuntu 12.04 hatte ich das gleiche Problem, nachdem ich die Puffergrößen in der Datei /etc/mysql/my.cnf geändert hatte. Ich glaube, ich wurde ein wenig mitgerissen. Auf jeden Fall würde MySQL nach dem Versuch, sie wieder auf die Standardeinstellung zurückzusetzen, immer noch nicht gestartet.

Ich habe verschiedene Methoden ausprobiert, um das Problem zu beheben. Ich habe festgestellt, dass /var/run/mysql/mysql.sock fehlt. Dies könnte ein Problem sein, sodass Sie es dort überprüfen können. Wenn es fehlt, können Sie es wie folgt ersetzen:

sudo touch /var/run/mysql/mysql.sock
sudo chown mysql /var/run/mysql/mysql.sock

Dies hat das Problem für mich NICHT behoben! Aber es kann für einige.

Ich musste MySQL komplett neu installieren. Dazu müssen Sie den Befehl sudo verwenden. Die Schritte zum vollständigen Entfernen und erneuten Installieren von MySQL lauten wie folgt:

Entfernen Sie MySQL

sudo apt-get --purge remove mysql-server
sudo apt-get --purge remove mysql-client
sudo apt-get --purge remove mysql-common

Optional können Sie aptitude verwenden, indem Sie apt-get --purge durch aptitude ersetzen

Aufräumen

sudo apt-get autoremove
sudo apt-get autoclean

Entfernen Sie das MySQL-Verzeichnis

sudo rm -rf /etc/mysql

Installieren Sie MySQL

sudo apt-get install mysql-server mysql-client

MySQL sollte jetzt ausgeführt werden. Sie können dies folgendermaßen überprüfen:

sudo service mysql status

Das solltest du sehen

mysql start/running, process xxxxx

Ich hoffe, dies hilft und dachte, ich könnte danach alle meine Datenbanken und Tabellen hinzufügen, sofern diese noch verfügbar sind. Allerdings musste ich die Benutzer und Kennwörter für diese Datenbanken neu erstellen.

Hinweis: Wenn Sie eine MySQL-Erweiterung für PHP hatten, müssen Sie diese ebenfalls neu installieren.

sudo apt-get install php5-mysql
Kyle Coots
quelle
Dies funktionierte für mich, aber ich musste es ändern in: sudo touch /var/run/mysqld/mysqld.sockund ich fand dies am Ende des /var/log/syslog (z. B. Wechsel zu mysqld)
Programster
Ist es /var/run/mysqldoder /var/run/mysql?
CMCDragonkai
Das Berühren der Sockendatei ist eine schlechte Idee - Sie haben eine normale Datei erstellt, wenn es sich wirklich um einen Socket handelt, bei dem es sich um eine spezielle Art von Datei handelt.
Criggie
3

WARNUNG: Dies ist gefährlich, Ihre MySQL ist NICHT sicher und jeder kann Ihre Tabellen verbinden, bearbeiten usw. Lassen Sie Ihren Server nicht mit diesem Befehl laufen.

Versuchen Sie es im abgesicherten Modus: /usr/local/mysql/bin/safe_mysqld --user=mysql --skip-grant-tables

Wenn dies funktioniert, liegt möglicherweise ein Problem mit Ihrem information_schema oder Ihren MySQL-Tabellen vor. Wenn es nicht funktioniert, stimmt etwas mit Ihrer Installation nicht.

lilott8
quelle
1
Das ist gut, es gibt Ihnen detaillierte Fehler in Syslog. Der Befehl hat sich geändert, unter Ubuntu 12.04 ist essudo /usr/bin/mysqld_safe --user=mysql --skip-grant-tables
newz2000
3

Überprüfen Sie Ihre Protokolldateien wie in den anderen Antworten. Überprüfen Sie außerdem, ob Sie über genügend Speicherplatz (oder Speicherplatz) verfügen. MySQL kann sich auf einer leeren Partition so verhalten.

df -h

Wenn dies nicht der Fall ist, lesen Sie die Dokumente von MySQL zum Debuggen eines Servers . Ihre myisamchk(wenn Sie MyISAM verwenden) ist besonders nützlich.

Aidan Fitzpatrick
quelle
3

Ich habe dieses Problem auch kürzlich nach dem Update von Ubuntu bekommen. Ich bin mir noch nicht sicher, wo genau das Problem liegt. Ein Problem, das im Moment funktioniert hat, um MySQL zum Laufen zu bringen, war:

sudo aa-complain /etc/apparmor.d/*mysql*

Damit funktioniert es, was darauf hinweist, dass Apparmor die Ausführung von MySQL gestoppt hat, und erklärt, warum die Protokolle wahrscheinlich auch leer sind: MySQL durfte nicht ausgeführt werden.

Es bleibt ein seltsames Problem, da es bisher keine "Beschwerden" /var/log/apparmorgibt und der einzige Audit-Eintrag in kern.log darin besteht, das Profil in den Beschwerdemodus zu ändern.

Beachten Sie, dass ich dabei auch eine (leere) /etc/apparmor.d/local/usr.sbin.mysqlDatei hinzugefügt habe, da der befohlene aa-Beschwerde sich darüber beschwert hat, dass diese Datei nicht gefunden wurde.

user143757
quelle
Vielen Dank! Nachdem ich fast meine Haare herausgerissen hatte, war das endlich behoben.
Olathe
3

Ich hatte das gleiche Problem mit meinem 512 MB Digital Ocean-Tröpfchen.

Es stellte sich heraus, dass es an unzureichendem Speicher liegt.

Eine sofortige Lösung besteht darin, andere Dienste neu zu starten, um Speicher freizugeben, z.

sudo service apache2 restart

Dann sollten Sie hoffentlich mit genügend Speicher in der Lage sein, MySQL neu zu starten

sudo service mysql restart

Die langfristige Lösung besteht darin, entweder mehr RAM zu erhalten oder einen Swap-Speicher zu erstellen .

Samwize
quelle
2

Sehen Sie sich Ihre Protokolldateien an. Zumindest unter Debian erhalten Sie MySQL * -Anmeldungen /var/log.

innaM
quelle
3
mysql.err und mysql.log sind beide leer
Andrew
1

Hatte das gleiche Problem, stellte sich heraus, dass die Lösung mich ins Gesicht starrte. Die Fahrt war voll. Sie erhalten keine Protokolle, weil es keinen Ort gibt, an dem Sie sie schreiben können .....

Bootscodierer
quelle
0

Das gleiche Problem plagte mich ewig auf einem Ubuntu 12.04 Digital Ocean VPS mit MySQL 5.6, das von einem PPA installiert wurde. Die Symptome waren, dass die Datei mysql.sock unter /var/run/mysqld/mysql.sockentfernt, aber nie neu erstellt wurde. Daher musste ich die folgenden Befehle jedes Mal manuell ausführen, wenn mysql aktualisiert oder der Server neu gestartet wurde:

sudo touch /var/run/mysqld/mysql.sock
sudo chown mysql /var/run/mysqld/mysql.sock

Dies war aus Kyle Cs Antwort (außer mit mysqld anstelle von mysql). Am Ende habe ich ein Downgrade auf MySQL 5.5 durchgeführt, wenn Sie normalerweise einen sudo apt-get install mysql-serverBefehl ausführen würden . Es war jedoch nicht einfach, also musste ich Folgendes tun:

# Manually get mysql running if it is not
sudo touch /var/run/mysqld/mysql.sock
sudo chown mysql /var/run/mysqld/mysql.sock
sudo service mysql start

# take a dump of all databases 
# we are going to remove the mysql files so don't skip this)
mysqldump -u root -p > all-databases.sql

# Completely remove mysql
sudo apt-get remove --purge mysql-server mysql-client mysql-common
sudo apt-get autoremove
sudo apt-get autoclean

# Remove mysql 5.6 from debs (otherwise it will reinstall 5.6)
rm /etc/apt/sources.list.d/ondrej-(mysql something please check)

# remove a flag that would prevent the installation
# because it is seen as a downgrade
sudo rm /var/lib/mysql/debian-5.6.flag

# I had to remove the mysql files as well
# reference http://ubuntuforums.org/showthread.php?t=1998260&page=3
rm -rf /var/lib/mysql
rm -rf /etc/mysql*

# Install mysql
sudo apt-get install mysql-server mysql-client mysql-common php5-mysql

# manually update the all-databases.sql file and 
# remove all STATS_PERSISTENT clauses on table creation statments

# re import the databses
mysql -u root -p < all-databases.sql

# restart apache
sudo service apache2 restart

# at this point my wordpress site stated error connecting to database.
# This was resolved by logging into mysql and running:
FLUSH PRIVILEGES

Hoffentlich hilft dies jemand anderem, der die gleichen Schmerzen hat.

Programmierer
quelle
0

Ich denke, das könnte anderen helfen ... also hier ist es.

Ich wollte mein MySQL 5.5 (Ubuntus Standard) auf das neue 5.7 migrieren
(wollte mit dem neuen nativen JSON-Typ herumspielen).

Ich habe die Anweisungen zum Installieren der neuesten Version befolgt ...
aber MySQL wollte nicht starten.

Verbrachte einige Zeit mit Suchen und fand dann diese Zeile in /var/log/mysql/errors.log:

unknown variable 'key_buffer=16M'

und das ist etwas, das darin festgelegt ist, /etc/mysql/my.cnfdass ich mich während des Upgrades dafür entschieden habe, es zu behalten.

Also ganz einfach danach:
Ersetzte meine my.cnfdurch eine my.cnf.dpkg-distVersion, die sich im selben Verzeichnis befindet ...

Dann musste rennen

sudo mysql_upgrade -u root -p sudo service mysql restart

und jetzt ist MySQL wieder betriebsbereit

dGo
quelle
0

Fand eine andere Variation darüber, was falsch sein kann. Ich habe das Datenverzeichnis verschoben und es stellte sich heraus, dass ich vergessen habe, das Verzeichnis für den MySQL-Benutzer zu durchsuchen, was auch ohne jegliche Ausgabe fehlschlägt. Im Nachhinein offensichtlich falsch, aber ein Mangel an Fehlermeldungen macht es schwierig, jedes triviale Problem zu finden.

Kdansky
quelle