"Fehler beim Erzeugen des mysql-Hauptprozesses: Ausführung nicht möglich: Keine solche Datei oder kein solches Verzeichnis"

56

Ich bin ein Neuling auf MySQL-Basis.

Ich habe gerade das Upgrade von 11.10 auf 12.04 beendet.

Alles schien ohne Probleme zu funktionieren und alle meine Software und Einstellungen funktionieren einwandfrei. Abgesehen von MySQL.

Wenn ich versuche:

sudo start mysql

Ich erhalte eine Fehlermeldung:

start: Job failed to start

Wo kann ich möglicherweise das Problem diagnostizieren? Und (hoffentlich) - wie soll das geklärt werden?

(Ich habe den automatischen Start deaktiviert , wenn dies von Bedeutung ist.)


Update 1:

Beide Ausgänge von:

cat /var/log/mysql.err 
cat /var/log/mysql.log

sind leer.

Ausgabe von dmesg | grep mysql:

[ 1401.785141] type=1400 audit(1335619832.181:25): apparmor="STATUS" operation="profile_replace" name="/usr/sbin/mysqld" pid=16165 comm="apparmor_parser"
[ 1401.791089] init: Failed to spawn mysql main process: unable to execute: No such file or directory

Update 2:

Wie von AWinter unten angegeben, schien MySQL nach dem Upgrade automatisch verschwunden zu sein und musste neu installiert werden.

radek
quelle

Antworten:

48

Vergewissern Sie sich, dass das Paket mysql-server-5.1 deinstalliert wurde und nach dem Upgrade möglicherweise weiterhin vorhanden ist. Ich hatte den gleichen Fehler und musste MySQL Server 5.1 und 5.5 löschen und dann neu installieren.

Erstellen Sie zunächst aus Sicherheitsgründen ein Backup Ihres / var / lib / mysql / -Verzeichnisses.

sudo cp -R /var/lib/mysql/ ~/mysql

Als nächstes bereinigen Sie MySQL (dies entfernt PHP5-MySQL und PHPMYADMIN sowie eine Reihe anderer Bibliotheken. Bereiten Sie sich also darauf vor, einige Elemente danach erneut zu installieren.

sudo apt-get purge mysql-server-5.1 mysql-common

Entfernen Sie den Ordner / etc / mysql / und dessen Inhalt

sudo rm /etc/mysql/ -R

Überprüfen Sie als nächstes, ob sich Ihre alten Datenbankdateien noch in / var / lib / mysql / befinden. Wenn dies nicht der Fall ist, kopieren Sie sie zurück in den Ordner, der als root: root angezeigt wird

(Führen Sie diese nur aus, wenn die Dateien nicht mehr vorhanden sind.)

sudo mkdir /var/lib/mysql/
sudo chown root:root /var/lib/mysql/ -R
sudo cd ~/mysql/
sudo cp * /var/lib/mysql/ -R

Installieren Sie als Nächstes den MySQL-Server

sudo apt-get install mysql-server

Installieren Sie abschließend alle fehlenden Pakete wie phpmyadmin und php5-mysql neu.

AWinter
quelle
1
Ausgezeichnet. Arbeitete als Charme. Alles funktioniert wieder. Ein Hinweis: Ich musste dieses Verzeichnis nicht entfernen sudo rm /etc/mysql/ -R- es war in meinem Fall einfach nicht vorhanden. Wie auch immer - zum Glück war es nur eine lokale Installation, um Wordpress zu testen. Ich
frage
apt-get --reinstall install mysql-server-xx hat die Arbeit für mich erledigt.
Yashima
Das hat bei mir apt-get updategeklappt , aber ich hätte es wahrscheinlich vorher tun sollen , weil es dovecot und php5-mysql entfernt hat. Ich konnte diese erst nach dem Update neu installieren. Sobald ich fertig war, funktionierte alles wieder gut.
AntonChanning
Ich bekomme -bash: cd: /var/lib/mysql/: Permission deniedund benutze sudo -ifunktioniert nicht einmal.
Charlotte
@LittleBigBot Ich habe eine Änderung vorgenommen, die das beheben sollte.
AWinter
15
sudo dpkg-reconfigure mysql-server-5.5
Kevin C. Smith
quelle
Keine sehr freundliche Antwort, aber es hat bei mir funktioniert :-)
Joseph
1
Hat bei mir nicht funktioniert: [
ThomasReggi
12

Ich hatte das gleiche Problem und für mich war es, dass die InnoDB-Protokolldateien eine andere Größe hatten als von MySQL erwartet und während des Upgrades unbemerkt fehlgeschlagen sind.

Ich hatte eine benutzerdefinierte Konfigurationsdatei, die beim Upgrade auf 12.04 gelöscht wurde, und die die Protokolldateigrößen auf etwas anderes als die Standardkonfiguration festlegte.

Sie müssen die folgenden Dateien entfernen: / var / lib / mysql / ib_logfile *

Nachdem die Dateien verschwunden sind, kann mysql jetzt neue Protokolldateien in der Standardgröße erstellen.

Corey Aufang
quelle
Bingo. In unserem Fall hatte ein Entwickler einige Konfigurationseinstellungen für innodb geändert (und weder er noch ich wussten, dass dies ein Problem verursachen könnte). Dies verhinderte das Starten von MySQL. Durch das Löschen dieser Konfigurationsdateien konnte MySQL gestartet werden.
Gaoshan88
Bingo - Die Konfigurationseinstellung für innodb_log_file_size wurde geändert.
Tweak2
9

Die meisten Fehler treten auf, wenn der Server im ausführlichen Nicht-Daemon-Modus gestartet und die Ausgabe überwacht wird:

sudo mysqld --verbose
Ian Mackinnon
quelle
7

Ich hatte das gleiche Problem, aber keine der obigen Antworten hat mir geholfen. Als letzte Hoffnung habe ich versucht, Speicherplatz freizugeben. Ich entferne einfach unnötige Protokolldateien aus / var / log, wodurch 2,5 GB Speicherplatz frei werden. Dann wurde MySQL normal gestartet.

Auge
quelle
Ja, das war auch mein Problem. mysql startete nicht wie zuvor beim booten. Später wurde die Systeminformation, die an das Terminal gerendert wird; "Auslastung von /: 95.1%" Es war also nicht genügend Speicherplatz vorhanden, um mysql (und andere Prozesse) zu starten. Ich musste einige Dateien bereinigen, und MySQL startete ohne Probleme.
Screenack
Das war mein Fall. Die Datenträgerbereinigung und MySQL beginnen zu funktionieren.
Sergey Romanov
5

Dies passiert manchmal und obwohl es ein paar verschiedene Probleme gibt, die dazu führen könnten, dass MySQL nicht startet, schreibe ich hier einige der häufigsten, die mir bekannt sind:

HINWEIS - Da ich die häufigsten Probleme erläutere, gehe ich davon aus, dass Sie bereits versucht haben, den mysql-Dienst zu entfernen und zu installieren oder einfach neu zu installieren:

Installieren - sudo apt-get install mysql-server mysql-client
Entfernen - Löschen sudo apt-get remove mysql-server mysql-client
(Dateien entfernen + Konfiguration) - sudo apt-get purge mysql-server mysql-client
Neu installieren -sudo apt-get install --reinstall mysql-server mysql-client

  1. my.cnfDie Datei befindet sich nicht im Standardverzeichnis. Es sollte sich (standardmäßig) entweder in /etc/my.cnfoder befinden /etc/mysql/my.cnf.

  2. Nicht genügend Speicherplatz auf der Festplatte, auf der sich die MySQL-Datendateien befinden. Wenn die Datenbanken zu groß werden und 100% der Festplatte beanspruchen, schlägt der Dienst fehl.

  3. Überprüfen Sie nach dem Upgrade, ob sich die my.cnfDatei am richtigen Ort befindet. Abhängig davon, wie Sie ein Upgrade durchgeführt haben oder von welcher Version Sie ein Upgrade durchgeführt haben, kann dies in /etc/my.cnfoder /etc/mysql/my.cnfwie oben erwähnt sein. Denken Sie auch daran, dass die Datei auch benannt werden kann mysql.confund nicht nur my.cnf. Dies geschieht in Fällen, in denen Sie die Binärdatei von mysql.com heruntergeladen haben .

  4. Wenn Sie a dmesgausführen, um zu sehen, was der mysql-Dienst auslöst, hilft eine Fehlermeldung, da der Ladefehler angezeigt wird. Es könnte auch sagen, warum dies geschieht. Wenn Sie dmesgalleine im Terminal tippen, zeigt es Ihnen die Welt. Was wir wollen, ist die Information über MySQL. Machen Sie also so etwas: dmesg | grep mysqlDies wirft Ihnen alle Zeilen aus, die MySQL enthalten.

  5. Überprüfen Sie, ob die Datei my.cnfoder mysql.confkorrekt ist. In 12.04 ist MySQL Version 5.5, in 11.10 Version 5.1. Möglicherweise hat es einige Änderungen in der conf-Datei (habe das nicht überprüft) und es mag albern klingen, aber es kann Ihnen sicher Probleme bereiten.

  6. Fehler im Zusammenhang mit Socket-Problemen sind normalerweise der Fehler der my.cnfoder mysql.conf-Datei, die auf die falsche Stelle verweist. Der Fehler wird normalerweise wie folgt angezeigt:

    Verbindung zum lokalen MySQL-Server über Socket '/var/run/mysqld/mysqld.sock' nicht möglich

    Die andere Ursache für dieses Problem liegt darin, dass die mysqlDatei /etc/init.dauf den falschen Ordner verweist, da möglicherweise ein älteres Skript als das für die eigentliche MySQL- Datei auf dem System erforderliche verwendet wird die Konfigurationsdatei, etc ..). Bearbeiten Sie also einfach eine dieser beiden Dateien und sudo service mysql restartprüfen Sie, ob sie auf eine andere Stelle verweisen. Führen Sie dann einfach eine aus , um zu überprüfen, ob sie funktioniert.

  7. Um die fehlerspezifischen Ausgaben von mysql genauer zu betrachten, gehen Sie wie folgt vor:

    cat /var/log/mysql.err- Zeigt Ihnen die MySQL-Fehler. Ich würde es so machen, cat /var/log/mysql.err | lesswenn Sie zufällig sehen, dass zu viele Informationen vorbeifliegen, da dies lessIhnen hilft, durch die Ausgabe von zu scrollen cat.

    Gleiches gilt für cat /var/log/mysql.logWenn Sie den Fehler dort sehen, können Sie ihn möglicherweise in die Frage oder als Kommentar einfügen, um ihn schneller zu beantworten.

  8. Wenn Sie unter Verbindungsproblemen leiden und der Dienst ausgeführt wird, überprüfen Sie, ob die Firewall des Servers Verbindungen über den 3306-Port zulässt (eingehende Verbindungen). Überprüfen Sie anschließend, ob der Router (falls zutreffend) den Port 3306 nicht blockiert hat. Führen Sie im Grunde genommen einen Netzwerktest durch, um festzustellen, woher das Problem mit dem MySQL zugewiesenen Port stammt.

Wenn alles in Ordnung ist, testen Sie, ob der MySQL-Dienst ausgeführt wird service mysql status

Als letztes. Wenn Sie gerade mysql ausführen, sich aber nicht anmelden können, versuchen Sie Folgendes:

  1. Stoppen Sie den MySQL Server:

    sudo /etc/init.d/mysql stop oder sudo service mysql stop

  2. Starten Sie den mysqldDienst manuell mit manueller Konfiguration

    sudo mysqld --skip-grant-tables &

    (Denken Sie daran, das & hinzuzufügen, andernfalls müssen Sie ein anderes Terminal öffnen. Das & schickt den Prozess in den Hintergrund und Sie können mit demselben Terminal abbrechen.)

  3. Melden Sie sich bei der MySQL-Datenbank als ROOT an

    mysql -u root mysql

  4. Geben Sie Folgendes ein und ersetzen Sie das MyPASSWORD durch Ihr neues Passwort

    UPDATE user SET Password=PASSWORD('MyPASSWORD') WHERE User='root';
    FLUSH PRIVILEGES;
    EXIT;

Dies sollte ausreichen, um sich erneut als root bei Ihrem MySQL-Dienst anzumelden. Ich hoffe es hilft.

Luis Alvarado
quelle
Vielen Dank für das schnelle Feedback. Die Datei my.cnf befindet sich /etc/mysql/my.cnfin meinem Fall. Ist das der richtige Ort? dmesggibt mir eine Menge Output, die ich nicht verstehen kann: / Ich hatte tatsächlich 5.1 installiert - hat das irgendwelche Konsequenzen?
Radek
1
Machen Sie sich keine Sorgen über den Speicherort, wenn Sie die Datei finden. Lassen Sie mich die Antwort aktualisieren, um einen besseren Überblick über die mysql-Ausgabe in dmesg zu erhalten.
Luis Alvarado
4

Ich hatte das gleiche Problem nach dem Upgrade auf Ubuntu Server 12.04 LTS

sudo apt-get install mysql-server 

war genug, um es zu beheben, obwohl es über eine alte Datenbank von Spotweb beschwert. Ich habe das behoben, indem ich spotweb entfernt habe:

sudo apt-get purge spotweb

und Neukonfiguration von MySQL:

sudo dpkg-reconfigure mysql-server-5.5
RedPixel
quelle
4

Ich werde dies hinzufügen, falls jemand mit ähnlichen Problemen konfrontiert ist. Ich habe alle Deinstallationen und Neuinstallationen ohne Erfolg versucht. Der Schlüssel zum Finden der Lösung war, dass Upstart die Fehlerprotokolle in diesem Ordner ablegt

/ var / log / upstart /

für MySQL

/var/log/upstart/mysql.log

Als ich es öffnete, hatte es diese Nachricht

AppArmor-Parser-Fehler für /etc/apparmor.d/usr.sbin.mysqld in /etc/apparmor.d/tunables/global in Zeile 15: 'tunables / home' konnte nicht geöffnet werden

Als ich im Ordner /etc/apparmor.d/tunables/ nachgesehen habe, fehlte mir darin die Home-Datei, also habe ich eine erstellt

gedit /etc/apparmor.d/tunables/home und kopierte den Inhalt von einem anderen Computer mit diesen nicht kommentierten Zeilen

@ {HOME} = @ {HOMEDIRS} / * / / root /

@ {HOMEDIRS} = / home /

Jemand hat hier ein ähnliches Problem

https://bugs.launchpad.net/ubuntu/+source/mysql-5.5/+bug/982303

Danach konnte ich den Dienst neu starten

pt123
quelle
2

In meinem Fall war es viel einfacher als einige Antworten hier. Ich habe den entsprechenden Fehler auf dem Launchpad gefunden und das Update war wie in Kommentar 9 erwähnt:

sudo touch /etc/apparmor.d/local/usr.sbin.mysqld
sudo service apparmor restart
Manfred Moser
quelle
1

Nach dem Upgrade stellte ich fest, dass mysql-server / mysql-server-5.5 nicht installiert war und auch nicht 5.1. Ich habe my.cnf in my.cnf_old umbenannt und versucht, mysql-serven zu installieren. Während der Installation gab es eine Fehlermeldung, dass das Root-Passwort nicht festgelegt werden konnte. Danach überprüfte ich meine Configs, Apparmor und so weiter. Alles schien in Ordnung zu sein. Mein nächster Versuch war, mysql-server neu zu konfigurieren, aber es wurde beanstandet, dass das Paket nicht vollständig installiert wurde. Also habe ich mich entschlossen, das Paket zu deinstallieren und währenddessen apt-get zu reparieren und jetzt funktioniert es. Ich weiß nicht warum, weil ich nichts geändert habe.

user54914
quelle
1

Ich hatte ähnliche Probleme, wurde aber schnell auf das Problem aufmerksam, an das ich mich erinnerte.

Wenn Sie Änderungen an diesen Einstellungen vornehmen und Ihr System Apparmor verwendet, müssen Sie möglicherweise auch /etc/apparmor.d/usr.sbin.mysqld anpassen. Z.B. Diese Zeilen wurden hinzugefügt (um einen Symlink zur my.cnf zu ermöglichen und um das Lesen der symlinked-Datei zu ermöglichen, vermutlich):

/ usr / sbin / mysqld {... /etc/mysql/*.cnf lr, /path/to/symlinked/my.cnf r, ...}

Simon Nuttall
quelle
1

In meinem Fall habe ich versucht, MySQL auf einer Neuinstallation von Ubuntu 12.04 zu installieren, aber ich habe nicht verstanden, warum ich beim Festlegen des Passworts für den Benutzer 'root' einen Fehler gemacht habe. Ich habe alle oben genannten Lösungen ausprobiert, aber nichts zu tun.

Dann entschied ich mich, alles zu löschen / entfernen, deinstallierte den MySQL-Server und entfernte alle seine Ordner (/ etc / mysql / und / var / lib / mysql /), schließlich dank einer Art Zufall, dass er während der Installation keinen Fehler verursachte Neuinstallation und ich konnte das Passwort festlegen und die Serverinstanz starten.

Alexian
quelle
0

Im Terminal können Sie es erneut installieren und my.cnf ausführen lassen. Sie können Folgendes eingeben:

sudo apt-get install mysql-server-5.1
sudo apt-get --reconfigure mysql-server-5.1
sudo apt-get update
sudo start mysql my.cnf

es könnte so funktionieren.

Michael
quelle
0

Ich habe Probleme, dass das Hinzufügen performance_schemaunter [mysqld]in /etc/mysql/my.confdiesen Fehler verursacht. Entfernte diese Zeile und MySQL konnte neu starten.

Bearbeiten: Es stellt sich heraus, dass ein Gig RAM nicht ausreicht, um mysqld mit aktiviertem performance_schema zu starten. Ich bin auf 3 Gigs gestoßen und es hat gut funktioniert.

ThorSummoner
quelle