16.04 Upgrade brach den Mysql-Server

114

Mein gesamtes Upgrade ist gut verlaufen, aber es bleibt ein kritisch anhaltendes Problem, 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 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. Dabei wurde jedoch versucht, MariaDB aufgrund von Abhängigkeiten (?) zu installieren. Alle Vorschläge, was ich tun kann, um das Problem zu beheben, sind sehr willkommen.

BEARBEITEN: Sieht so aus, als wäre ich nicht der einzige: link

    
TheGremlyn 22.04.2016, 19:53

8 Antworten

112

Die Anweisungen @ andrew-beerman posted sind auf dem richtigen Weg, obwohl sie mir nicht ganz klar sind und mehr zu empfehlen scheinen, als nötig ist. Ich habe die Antwort von oben zusammengestellt und einen hilfreichen Beitrag im Bug-Thread.

Dies sind die Schritte, die ich zur Behebung dieses Problems unternommen habe:

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

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

    sudo rm -r /etc/mysql/mysql.conf.d/
    
  3. Stellen Sie sicher, dass Sie keine my.cnf -Datei an einem anderen Ort (in meinem Heimatverzeichnis!) oder in /etc/alternatives/my.cnf use

    gespeichert haben
    sudo find / -name my.cnf
    
  4. Sichern und entfernen Sie /etc/mysql/debian.cnf -Dateien (nicht sicher, ob dies erforderlich ist, 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 Verzeichnis von '/etc/mysql/conf.d/' nicht lesen" "erstellen, erstellen Sie einen symbolischen Link:

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

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

Das hat funktioniert!

    
TheGremlyn 25.04.2016, 15:38
54

Heute hatte ich das gleiche Problem. Nachdem ich viele Lösungen ausprobiert hatte, stellte ich fest, dass das Problem der Befehl sudo systemctl disable mysql.service war, den ich zum Deaktivieren des automatischen Startens von MySQL verwendet habe. Damit er wieder funktioniert, habe ich den MySQL-Server mit dem Befehl% wieder aktiviert. sudo systemctl enable mysql.service und führen Sie den Upgrade-Vorgang erneut aus, und der Vorgang wurde perfekt beendet.

    
Naruto Biju Mode 26.04.2016 00:37
17

Die Anweisungen hier auf meinem Server wurden behoben: link

  

Ich kann den Schmerz verstehen, wenn sich Ihr System in einem inkonsistenten Zustand befindet   aber machen wir uns keine Sorgen um die ganze Situation und nehmen sie Schritt für Schritt   um das System sauber zu bekommen.

     

Zuerst sehen Sie den aktuellen Status aller MySQL-Pakete auf dem Computer   mit: dpkg -l | grep mysql (Bitte fügen Sie die Ausgabe mit Ausnahme des letzten ein   Spalte)

     

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

     

ii) Installed rc) Entfernte Konfigurationsdateien (Dies sollte der Status sein.)   von allen Paketen, die Sie mit 'apt-get remove' entfernt haben   Entfernen Sie keine Konfigurationsdateien unter / etc)

     

Damit dies funktioniert, müssen Sie 'apt-get purge' ausführen   In der obigen Liste werden keine Pakete angezeigt.

     

Bitte beachten Sie, dass einige Nicht-MySQL-Server-Pakete wie   python-mysql.connector und python-mysqldb müssen, sofern installiert, nicht sein   entfernt, da sie keinen Einfluss auf diese Situation haben, aber wenn   Wenn Sie diese Option entfernen, kann dies zu Problemen bei Anwendungen führen.

     

Wir werden auf jeden Fall versuchen, unsere Dokumente erneut zu besuchen, um zu sehen, wie wir das erreichen können   schützen Benutzer vor diesem Problem. Danke für das Teilen   Ihr Feedback im Detail mit uns.

    
Andrew Beeman 23.04.2016 00:05
17

Ihre Fehlermeldung enthält folgende Zeile:

subprocess installed post-installation script returned error exit status 1

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

Öffnen Sie diese Datei mit sudo vi /var/lib/dpkg/info/mysql-server-5.7.postinst oder Ihrem bevorzugten Editor.

Ändern Sie oben Zeile 3 (oder so): set -e in set -x , und speichern Sie die Datei. (Option -e ist "Exit bei Fehlern", -x bedeutet "explizit den ausgeführten Befehl anzeigen", vermutlich)

Führen Sie sudo dpkg --configure -a --log /tmp/dpkg.log aus (Die Option --log ist optional). Sie können auch apt upgrade einfach ausführen, wenn Sie wissen, dass es das einzige Paket ist, für das ein Upgrade durchgeführt wird.

Jetzt erhalten Sie eine ausführliche Ausgabe des mysql-server-5.7.postinst bash-Skripts, und Sie können herausfinden, was falsch ist.

In meinem Fall wurde erfolglos versucht, mysql_upgrade (erneut) auszuführen, dies war jedoch für meine angepasste mysql-Installation nicht erforderlich. Ich war sicher Ich habe es vorher manuell erfolgreich ausgeführt, und alles war gut.

Ich habe also Zeile 321 auskommentiert (versuchen Sie Zeile 281 für ältere mysqld-Versionen),

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

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

Jetzt können Sie set -x auf set -e zurücksetzen (siehe oben). Und kommentieren Sie optional die mysql-upgrade-Zeile.

Wenn Sie Ihre mysql-Datenpartition an einen nicht standardmäßigen Speicherort verschoben haben, ist möglicherweise zusätzliche Arbeit erforderlich. Ich habe meinen von /var/lib/mysql/data über Symlink auf ein anderes Laufwerk verschoben. Dann müssen Sie möglicherweise den symbolischen Link vorübergehend entfernen, bevor Sie das Skript postinst bearbeiten. Erstellen Sie es dann nach der Aktualisierung des Pakets erneut.

Nach dem nächsten kleineren Versionsupgrade des Debian-Pakets mysqld kann dieses Problem mit dem /var/lib/dpkg/info/mysql-server-5.7.postinst -Skript erneut auftreten.

    
knb 01.07.2016 14:03
3

In meinem Fall habe ich mit strace gesehen, dass / var / run / mysqld / nicht vorhanden ist und mysqld die Datei mysqld.sock nicht erstellen 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:)

    
Leonardo Catalinas 27.04.2016 10:14
3

In meinem Fall könnte ich das Problem durch Hinzufügen von

lösen
# 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

Weitere Informationen erhalten Sie unter Antwort (von ChristophS) bei stackoverflow.

    
ChristophS 29.04.2016 14:30
1

Keine der Antworten auf dieser Seite hat für mich funktioniert.

Ich bin auf die Seite für Oracle-Downloads gegangen, habe mysql-apt-config_0.8.8-1_all.deb heruntergeladen und MySQL von Oracle Repo installiert:

sudo dpkg -i mysql-apt-config_0.8.8-1_all.deb
sudo apt update
sudo apt install mysql-server
    
ostrokach 25.09.2017 19:19
0

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

Ich fand heraus, dass das Problem für mich war, dass bereits ein anderer Mysql-Prozess ausgeführt wurde.

In Details:

Nachdem ich sorgfältig gelesen habe, loggen Sie sich in /var/log/mysql/error.log ein und haben gefunden:

  

[ERROR] Server kann nicht gestartet werden: Binden am TCP / IP-Port: Adresse bereits in   Verwenden Sie

     

[ERROR] Haben Sie bereits einen anderen mysqld-Server an Port:   3306?

Sieht aus, als hätte eine andere Anwendung bereits den Port verwendet.

Ich habe es mit ps -aux | grep 3306 :

geprüft
$ 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 sudo kill -15 14706

beendet

Dann habe ich mysql: /etc/init.d/mysql start

gestartet

Schließlich arbeitet mysql für mich! Ich hoffe es hilft jemandem.

    
milkovsky 20.08.2016 22:02

Tags und Links