Mein Gesamt-Upgrade ist gut verlaufen, aber ich habe ein kritisches Problem damit, dass mysql-server nicht in der Lage ist, sich selbst zu installieren, und nichts, was ich versuche, bringt es zum Laufen.
Dies ist der Fehler, den ich sehe, wenn ich versuche, es zu installieren / neu zu installieren:
Setting up mysql-server-5.7 (5.7.11-0ubuntu6) ...
Job for mysql.service failed because the control process exited with error code. See "systemctl status mysql.service" and "journalctl -xe" for details.
invoke-rc.d: initscript mysql, action "start" failed.
dpkg: error processing package mysql-server-5.7 (--configure):
subprocess installed post-installation script returned error exit status 1
dpkg: dependency problems prevent configuration of mysql-server:
mysql-server depends on mysql-server-5.7; however:
Package mysql-server-5.7 is not configured yet.
dpkg: error processing package mysql-server (--configure):
dependency problems - leaving unconfigured
No apport report written because the error message indicates its a followup error from a previous failure.
Processing triggers for systemd (229-4ubuntu4) ...
Processing triggers for ureadahead (0.100.0-19) ...
Errors were encountered while processing:
mysql-server-5.7
mysql-server
E: Sub-process /usr/bin/dpkg returned an error code (1)
Ich habe versucht, es vollständig zu entfernen, obwohl ich versucht habe, MariaDB aufgrund von Abhängigkeiten (?) Zu installieren. Vorschläge, was ich tun kann, um dies zu beheben, wären sehr willkommen.
EDIT: Sieht so aus, als wäre ich nicht der einzige: https://bugs.launchpad.net/ubuntu/+source/mysql-5.7/+bug/1573279
Antworten:
Die Anweisungen @ andrew-beerman sind auf dem richtigen Weg, obwohl sie mir nicht ganz klar sind und mehr zu empfehlen scheinen, als notwendig ist. Ich habe die Antwort von oben und einen hilfreichen Beitrag im Bug-Thread zusammengestellt.
Dies sind die Schritte, die ich unternommen habe, um dies zu korrigieren:
Sichern Sie Ihr
my.cnf file
in/etc/mysql
und entfernen Sie es oder benennen Sie es umEntfernen Sie den Ordner
/etc/mysql/mysql.conf.d/
mitStellen Sie sicher, dass Sie keine
my.cnf
Datei haben, die an einem anderen Ort (in meinem Heimatverzeichnis!) Oder in/etc/alternatives/my.cnf
Gebrauch istSichern und Entfernen von
/etc/mysql/debian.cnf
Dateien (nicht sicher, ob erforderlich, aber nur für den Fall)Falls Ihr Syslog einen Fehler wie "mysqld: Verzeichnis von '/etc/mysql/conf.d/' kann nicht gelesen werden" anzeigt, erstellen Sie einen symbolischen Link:
Dann sollte der Dienst beginnen können
sudo service mysql start
.Das hat es geschafft!
quelle
sudo find / -name "my.cnf"
könnte sich als nützlich erweisen.Heute habe ich das gleiche Problem bekommen, nachdem ich viele Lösungen ausprobiert hatte, fand ich, dass das Problem der Befehl war
sudo systemctl disable mysql.service
, mit dem ich den automatischen Start von MySQL deaktivierte. Um dies zumsudo systemctl enable mysql.service
Laufen zu bringen, habe ich den MySQL-Server mit dem Befehl wieder aktiviert und den Upgrade-Prozess und erneut ausgeführt es endete perfekt.quelle
sudo systemctl enable mysql.service
und danachsudo apt install -f
.Ihre Fehlermeldung enthält diese Zeile:
Dies
installed post-installation script
wird jedoch nicht namentlich erwähnt. Nachdem ich viel gebastelt hatte, fand ich heraus, dass es (in meinem Fall) heißt/var/lib/dpkg/info/mysql-server-5.7.postinst
.Öffnen Sie diese Datei mit
sudo vi /var/lib/dpkg/info/mysql-server-5.7.postinst
oder Ihrem bevorzugten Editor.An der Spitze Änderungslinie 3 (oder so):
set -e
aufset -x
, die Datei zu speichern. (Option-e
ist "Beenden bei Fehlern",-x
bedeutet "Befehl explizit ausführen", vermutlich)Führen Sie aus
sudo dpkg --configure -a --log /tmp/dpkg.log
(die Option --log ist optional). Sie können auch einfach ausführen,apt upgrade
wenn Sie wissen, dass dies das einzige Paket ist, das aktualisiert wird.Jetzt erhalten Sie eine ausführliche Ausgabe des
mysql-server-5.7.postinst
Bash-Skripts und können herausfinden, was nicht stimmt.In meinem Fall hat es erfolglos versucht, es (erneut) auszuführen
mysql_upgrade
, aber das wurde für meine angepasste MySQL-Installation nicht benötigt. Ich war mir sicher, dass ich es zuvor erfolgreich manuell ausgeführt habe und alles in Ordnung war.Also habe ich Zeile 321 kommentiert (für ältere mysqld-Versionen versuchen Sie es mit Zeile 281).
#mysql_upgrade --defaults-file=/etc/mysql/debian.cnf || result=$?
und der Befehl, der zuvor fehlgeschlagen ist
sudo apt upgrade
(führen Sie ihn erneut aus), wurde erfolgreich beendet und dpkg hat den Fehlerstatus für dieses Paket entfernt.Jetzt können Sie die zurück
set -x
zuset -e
( siehe oben). Und optional die mysql-upgrade-Zeile auskommentieren.Zusätzliche Arbeit kann erforderlich sein, wenn Sie Ihre mysql-Datenpartition an einen nicht standardmäßigen Speicherort verschoben haben. Ich bin von meinem
/var/lib/mysql/data
auf ein anderes Laufwerk über Symlink umgezogen . Dann müssen Sie möglicherweise den symbolischen Link vor derpostinst
Skriptmanipulation vorübergehend entfernen . Erstellen Sie es dann nach dem Ausführen des Paket-Upgrades neu.Nach dem nächsten Minor-Versions-Upgrade des mysqld-Debian-Pakets kann dieses Problem mit dem
/var/lib/dpkg/info/mysql-server-5.7.postinst
Skript erneut auftreten.quelle
set -e
ich das genaue Problem herausfinden - MySQL hatte keinen Zugriff für den in angegebenen Ubuntu-Systembenutzer/etc/mysql/debian.cnf
. Also fügte ich diesen Benutzer zu MySQL hinzu und gewährte ihm Privilegien, liefdpkg
erneut und es funktionierte!Die Anweisungen hier haben das Problem auf meinem Server behoben: https://bugs.mysql.com/bug.php?id=72722
quelle
dpkg -l | grep mysql
. Es half, die Richtung zu verstehen.sudo apt-get purge <pkg-name>
ich habe es mit einem edit behoben aber: ich<
habe unicode zeichen für das verwendet weil es sonst nicht angezeigt würde. Seien Sie gewarnt, kopieren Sie diesen BefehlIn meinem Fall habe ich mit strace gesehen, dass / var / run / mysqld / nicht existiert und mysqld die Datei mysqld.sock nicht erstellen kann.
Diese Befehle lösten mein Problem:
Jetzt:
Und MySQL funktioniert wieder :)
quelle
In meinem Fall könnte ich das Problem durch Hinzufügen lösen
zu
/etc/apparmor.d/local/usr.sbin.mysqld
Weitere Details finden Sie in meiner Antwort (von ChristophS) auf stackoverflow.
quelle
Ich hatte das gleiche Problem. Ich habe mehrmals versucht, mysql neu zu installieren, hatte aber keinen Erfolg.
Ich fand heraus, dass das Problem für mich war, dass ein anderer mysql-Prozess bereits lief.
Im Detail:
Nachdem ich sorgfältig gelesen habe, melde ich mich an
/var/log/mysql/error.log
und finde:Anscheinend hat bereits eine andere Anwendung den Port verwendet.
Ich habe es überprüft mit
ps -aux | grep 3306
:Und ich habe den laufenden Prozess beendet
sudo kill -15 14706
Dann habe ich mysql gestartet:
/etc/init.d/mysql start
Endlich funktioniert MySQL für mich! Ich hoffe es hilft jemandem.
quelle
Keine der Antworten auf dieser Seite hat für mich funktioniert.
Am Ende ging ich zur Oracle-Downloadseite
mysql-apt-config_0.8.8-1_all.deb
, lud MySQL von Oracle Repo herunter und installierte es:quelle
isntall
->install
Tippfehler. Dumme SO erlaubt mir nicht, ein Zeichen zu korrigieren.Ich hatte das Problem jetzt auf einigen Servern. Das Update war, apt install phpmyadmin --reinstall auszuführen
welches das oben genannte Problem gelöst hat (ohne dass man danach mysql anfassen muss)
quelle