Frage 16.04 Upgrade brach mysql-server


Mein Gesamt-Upgrade verlief gut, aber ich bin mit einem kritisch anhaltenden Problem von mysql-Server nicht in der Lage, sich selbst zu installieren, und nichts, was ich versuche, es funktioniert.

Dies ist der Fehler, den ich beim Installieren / Neuinstallieren sehe:

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 dies versucht, MariaDB wegen Abhängigkeiten (?) Zu installieren. Irgendwelche Vorschläge, was ich tun kann, um dies zu beheben, wäre sehr zu begrüßen.

BEARBEITEN: Sieht so aus, als wäre ich nicht der Einzige: https://bugs.launchpad.net/ubuntu/+source/mysql-5.7/+bug/1573279


112
2018-04-22 17:53


Ursprung


Ich habe das gleiche Problem Hier. - KernelPanic
Musste phpmyadmin deinstallieren, was irgendwie die Abhängigkeitsprobleme verursachte. Nach der Neuinstallation funktioniert alles wieder gut. - Hinrich
do-release-upgrade von Ubuntu 14 auf 16 führt ein nicht unterstütztes Upgrade von MySQL 5.5 auf 5.7 durch, so dass erwartet wird, dass MySQL nach, wie hier berichtet, fehlerhaft ist: bugs.launchpad.net/ubuntu/+source/ubuntu-release-upgrader/+bug/... - Marco Marsala
@ MarcoMarsala Ich weiß nicht, ob wir es sagen können erwartet dass MySQL nach dem Upgrade von Ubuntu 14 auf 16 kaputt gehen wird, obwohl ich denke, das hängt von Ihrer Perspektive ab. Für den durchschnittlichen Benutzer wird sicherlich nicht erwartet, dass ein LTS-Upgrade etwas wie MySQL bricht. Es ist überraschend, dass das beim Testen nicht aufgefangen wurde. - TheGremlyn


Antworten:


Die Anweisungen @ andrew-beerman gepostet sind auf dem richtigen Weg, obwohl sie mir nicht ganz klar sind und scheinen mehr als nötig zu empfehlen. 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:

  1. Sichern Sie Ihre my.cnf file im /etc/mysql und entfernen oder benennen Sie es um

    sudo mv /etc/mysql/my.cnf /etc/mysql/my.cnf.bak
    
  2. Entfernen Sie den Ordner /etc/mysql/mysql.conf.d/ verwenden

    sudo rm -r /etc/mysql/mysql.conf.d/
    
  3. Vergewissern Sie sich, dass Sie keine haben my.cnf Datei irgendwo anders versteckt (ich habe in meinem Haus dir gemacht!) oder in /etc/alternatives/my.cnf benutzen

    sudo find / -name my.cnf
    
  4. Sichern und entfernen /etc/mysql/debian.cnf Dateien (nicht sicher, wenn nötig, aber nur für den Fall)

    sudo mv /etc/mysql/debian.cnf /etc/mysql/debian.cnf.bak
    sudo apt purge mysql-server mysql-server-5.7 mysql-server-core-5.7
    sudo apt install mysql-server
    
  5. Falls Ihr syslog einen Fehler wie "mysqld: Kann dir von /etc/mysql/conf.d/ lesen" nicht zeigt, erstellen Sie einen symbolischen Link:

    sudo ln -s /etc/mysql/mysql.conf.d /etc/mysql/conf.d
    

    Dann sollte der Dienst beginnen können sudo service mysql start.

Das hat funktioniert!


112
2018-04-25 13:38



Nach all diesen Vorgängen (ich habe es vorher gemacht) habe ich immer noch dieselben Fehlerprobleme ... - Sergii P
Sie müssen alle my.cnf. * Aus dem Verzeichnis / etc / mysql entfernen. Suchen Sie nach my.cnf.backup, my.cnf.fallback und my.cnf.migrated - alle diese Dateien müssen ebenfalls entfernt werden (Backup zuerst!) - hitzi
@SergiiP sudo find / -name "my.cnf" könnte nützlich sein. - starbeamrainbowlabs
mysql-server-core- sollte mysql-server-core-5.7 sein. Sonst funktionierte wie ein Zauber. Vielen Dank! - Anonymous
+1. Du hast meinen Tag gerettet! Auch morgens und abends! Ich steckte fest. - Max Yudin


Heute habe ich das gleiche Problem, nachdem ich viele Lösungen ausprobiert habe, stellte ich fest, dass das Problem der Befehl war sudo systemctl disable mysql.service dass ich den automatischen Start von MySQL deaktiviert habe, um es wieder funktionsfähig zu machen, habe ich den MySQL-Server mit dem Befehl wieder aktiviert sudo systemctl enable mysql.service und führen Sie den Upgrade-Prozess erneut und es endete perfekt.


54
2018-04-25 22:37



Ich bin auf dasselbe Problem gestoßen und die gleiche Lösung hat für mich funktioniert. - Allen
Arbeitete für mich. Hat jede Lösung hier, mysql arbeitete nach diesem. - Błażej Michalik
Dasselbe hier - das sollte Top Post sein. - a1phanumeric
Arbeitete auch für mich! Ich danke dir sehr. Nur um explizit zu sein, führen Sie: sudo systemctl enable mysql.service und nach diesem Lauf sudo apt install -f. - Fernando Paladini
Das war alles was ich tun musste. Ich hatte Autostart wie von @naruto beschrieben deaktiviert. Ich habe Autostart aktiviert und "sudo apt upgrade" ausgeführt. Jetzt behoben. Sollte Top-Antwort sein. Dies ist eine viel einfachere, standardisierte und weniger problemanfällige Lösung. - Jack Holt


Die Anweisungen hier behoben es auf meinem Server: https://bugs.mysql.com/bug.php?id=72722

Ich kann den Schmerz verstehen, wenn Sie Ihr System in einem inkonsistenten Zustand haben   aber sorgen Sie sich nicht um die ganze Situation und nehmen Sie es Schritt für Schritt   um das System sauber zu bekommen.

Zuerst sehen wir den aktuellen Zustand aller MySQL-Pakete auf dem Rechner   mit: dpkg -l | grep mysql (Bitte fügen Sie die Ausgabe mit Ausnahme der letzten ein   Säule)

Die erste Spalte zeigt den aktuellen Status des Pakets an. Hier sind   die möglichen Optionen:

ii) Installierte rc) Entfernte Konfigurationsdateien wurden beibehalten (Dies sollte der Status sein   von allen Paketen, die Sie mit "apt-get remove" entfernt haben   Konfigurationsdateien nicht unter / etc entfernen

Damit dies funktioniert, müssen Sie 'apt-get purge' bis zur Ausführung ausführen   Sie sehen keine Pakete in der obigen Liste.

Bitte beachten Sie, dass einige nicht-mysql-Server-Pakete mögen   python-mysql.connector und python-mysqldb, falls installiert, muss nicht sein   entfernt, da sie keinen Einfluss auf diese Situation haben, aber wenn   Entfernt könnte Probleme bei Anwendungen verursachen, die diese verwenden.

Wir werden definitiv versuchen, unsere Dokumente erneut zu besuchen, um zu sehen, wie wir das können   Schützen Sie Benutzer davor, in diese Schwierigkeiten zu geraten. Danke für das Teilen   Ihr Feedback im Detail mit uns.


17
2018-04-22 22:05



Danke für dpkg -l | grep mysql . Es half, die Richtung zu verstehen. - Max Yudin


Ihre Fehlermeldung enthält diese Zeile:

subprocess installed post-installation script returned error exit status 1

Dies jedoch installed post-installation script wird nicht namentlich erwähnt. Nach viel Basteln fand ich heraus, dass sein Name (in meinem Fall) /var/lib/dpkg/info/mysql-server-5.7.postinst.

Öffnen Sie diese Datei mit sudo vi /var/lib/dpkg/info/mysql-server-5.7.postinstoder dein bevorzugter Editor.

An der Spitze, ändern Sie Zeile 3 (oder so): set -e zu set -x, Speicher die Datei. (Möglichkeit -e ist "exit on errors", -x bedeutet "explizit show command executed", vermutlich)

Lauf sudo dpkg --configure -a --log /tmp/dpkg.log (Die Option --log ist optional). Sie können auch einfach laufen apt upgrade Wenn Sie wissen, dass es das einzige Paket sein wird, das aktualisiert wird.

Jetzt erhalten Sie ausführliche Ausgabe der mysql-server-5.7.postinst Bash-Skript, und Sie können herausfinden, was los ist.

In meinem Fall es versuchte erfolglos (wieder) zu laufen mysql_upgrade, aber das wurde nicht für meine angepasste mysql-Installation benötigt. ich war sicher Ich habe es manuell zuvor erfolgreich ausgeführt, und alles war gut.

Also habe ich die Zeile 321 herausgemischt (für ältere mysqld-Veröffentlichungen versuche Zeile 281),

#mysql_upgrade --defaults-file=/etc/mysql/debian.cnf || result=$?

und der Befehl, der zuvor fehlgeschlagen ist, sudo apt upgrade (erneut ausführen), erfolgreich beendet und dpkg hat den Fehlerstatus für dieses Paket entfernt.

Jetzt können Sie das zurücksetzen set -x zu set -e (oben erwähnt). Optional können Sie die mysql-upgrade-Zeile auskommentieren.

Wenn Sie Ihre MySQL-Datenpartition an einen nicht standardmäßigen Speicherort verschoben haben, ist möglicherweise zusätzliche Arbeit erforderlich. Ich zog meins aus /var/lib/mysql/data zu einem anderen Laufwerk über Symlink. Dann müssen Sie möglicherweise die symbolische Verbindung vorübergehend entfernen, bevor die postinst Skriptmanipulation. Dann erstellen Sie es nach dem Ausführen der Paketaktualisierung neu.

Nach dem nächsten Nebenversionsupgrade des debian - Pakets mysqld ist dieses Problem mit dem /var/lib/dpkg/info/mysql-server-5.7.postinst Skript kann wieder angezeigt werden.


17
2017-07-01 12:03



Ich habe am Ende alles bereinigt und dann die Community mysql-server-Version heruntergeladen und manuell von hier aus installiert: dev.mysql.com/downloads/mysql - RyanNerd
Genau dasselbe ist mir passiert, und deine Schritte haben es gelöst. Bur für mich mein mysql_upgrade Aufruf war in Zeile 320. Können Sie erklären, warum es einen Wert ungleich null zurückgibt, wenn es vom postinst Index angerufen wird? - emiliopedrollo
@emiliopedrollo Nein das kann ich hier nicht erklären. Aber ich denke, die Zeilennummer ist jetzt 320, weil die Paketbetreuer kürzlich das Postinstall-Skript erweitert haben, das gleiche habe ich neulich während der letzten Ausführung des Software-Updaters (der ein neues mysql-deb-Paket enthielt) beobachtet. . - knb
Vielen Dank! Mit set -e Ich war in der Lage, das genaue Problem herauszufinden - MySQL hatte keinen Zugriff auf den Ubuntu-Systembenutzer, der in angegeben wurde /etc/mysql/debian.cnf  . Also habe ich diesen Benutzer zu MySQL hinzugefügt und gewährt, ran dpkg wieder und es hat geklappt! - Allen Hamilton


In meinem Fall habe ich mit strace gesehen, dass / var / run / mysqld / nicht existiert und mysqld die Datei mysqld.sock nicht erzeugen kann.

Diese Befehle haben mein Problem gelöst:

mkdir /var/run/mysqld
chown mysql.mysql /var/run/mysqld
chmod 700 /var/run/mysqld

Jetzt:

systemctl start mysql

Und mysql funktioniert wieder :)


3
2018-04-27 08:14



Ich schlage vor, dass Sie diese Zeilen zu / usr / share / mysql / mysql-systemd-start ab Zeile 25 hinzufügen, dann müssen Sie dieses Verzeichnis nicht nach jedem Neustart neu erstellen (die Zeile returns funktioniert in diesem Kommentar leider nicht) : ob [ ! -d / run / msyqld]; dann mkdir -p -m0755 / run / mysqld || {echo "Kann nicht erstellen / run / mysqld"; Ausgang 1; } chown mysql: mysql / run / mysqld || {echo "Kann nicht chown / run / mysqld"; Ausgang 1; } fi - scoobydoo


In meinem Fall könnte ich das Problem lösen, indem ich hinzufüge

# Allow log file access
/home/system/var/log/mysql.err rw,
/home/system/var/log/mysql.log rw,
/home/system/var/log/mysql/ r,
/home/system/var/log/mysql/** rw,

zu /etc/apparmor.d/local/usr.sbin.mysqld

Für weitere Details werfen Sie einen Blick auf meine Antworten (von ChristophS) bei stackoverflow.


3
2018-04-29 12:30





Keine der Antworten auf dieser Seite funktionierte für mich.

Ich bin am Ende zum Oracle lädt die Seite herunter, wird heruntergeladen mysql-apt-config_0.8.8-1_all.debund installieren Sie MySQL von Oracle Repo:

sudo dpkg -i mysql-apt-config_0.8.8-1_all.deb
sudo apt update
sudo apt install mysql-server

1
2017-09-25 17:19



isntall-> install Tippfehler. Dummes SO erlaubt mir nicht, ein Zeichen zu korrigieren. - Csaba Toth
@CsabaToth korrigiert, danke! - ostrokach


Ich hatte das gleiche Problem. Ich habe versucht, mysql mehrmals neu zu installieren, hatte aber keinen Erfolg.

Ich stellte fest, dass das Problem für mich war, dass ein anderer MySQL-Prozess bereits lief.

Im Detail:

Nachdem ich aufmerksam lese, logge ich mich ein /var/log/mysql/error.log, und gefunden:

[ERROR] Server kann nicht gestartet werden: An TCP / IP-Port binden: Adresse bereits in   benutzen

[FEHLER] Haben Sie bereits einen anderen mysqld-Server auf dem Port:   3306?

Sieht so aus, als ob eine andere Anwendung bereits den Port verwendet hat.

Ich habe es überprüft ps -aux | grep 3306:

$ ps -aux | grep 3306
milkovs+  6802  0.0  0.0  16336  1084 pts/19   S+   21:39   0:00 grep --color=auto 3306
mysql    14706  0.0  0.3 1270192 13916 pts/2   Sl   Aug19   0:29 /usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib/mysql/plugin --user=mysql --skip-grant-tables --log-error=/var/log/mysql/error.log --pid-file=/var/run/mysqld/mysqld.pid --socket=/var/run/mysqld/mysqld.sock --port=3306 --log-syslog=1 --log-syslog-facility=daemon --log-syslog-tag=

Und ich habe den laufenden Prozess getötet 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.


0
2017-08-20 20:02