Vraag 16.04 upgrade brak mysql-server


Mijn algehele upgrade is goed verlopen, maar ik blijf een kritiek slepende kwestie van mysql-server die zichzelf niet kan installeren en niets dat ik probeer het te laten werken.

Dit is de fout die ik zie bij het installeren / opnieuw installeren ervan:

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)

Ik heb geprobeerd het volledig te verwijderen, hoewel ik hiermee MariaDB probeer te installeren vanwege afhankelijkheden (?). Suggesties voor wat ik kan doen om dit op te lossen, zijn van harte welkom.

BEWERK: Het lijkt erop dat ik niet de enige ben: https://bugs.launchpad.net/ubuntu/+source/mysql-5.7/+bug/1573279


112
2018-04-22 17:53


oorsprong


Ik heb hetzelfde probleem hier. - KernelPanic
Moest de installatie van phpmyadmin ongedaan maken, wat op de een of andere manier de afhankelijkheidsproblemen veroorzaakte. Na het opnieuw installeren werkt alles weer goed. - Hinrich
do-release-upgrade van Ubuntu 14 naar 16 voert een niet-ondersteunde upgrade uit van MySQL 5.5 naar 5.7, dus het is naar verwachting MySQL is gebroken na, zoals hier gemeld: bugs.launchpad.net/ubuntu/+source/ubuntu-release-upgrader/+bug/... - Marco Marsala
@MarcoMarsala Ik weet niet of we het kunnen zeggen verwacht voor MySQL om te worden verbroken na de Ubuntu 14 tot 16 upgrade, hoewel ik veronderstel dat dit afhangt van jouw perspectief. Voor de gemiddelde gebruiker is er zeker geen sprake van een LTS-upgrade zoals MySQL. Het is verrassend dat het niet tijdens het testen werd gepakt. - TheGremlyn


antwoorden:


De instructies @ andrew-beerman zijn op de goede weg, hoewel ze mij niet helemaal duidelijk zijn en lijken meer aan te bevelen dan nodig is. Ik heb het antwoord uit het bovenstaande samengevoegd en een handig bericht in de bug thread.

Dit zijn de stappen die ik heb genomen om dit te corrigeren:

  1. Maak een back-up van je my.cnf file in /etc/mysql en verwijder of hernoem het

    sudo mv /etc/mysql/my.cnf /etc/mysql/my.cnf.bak
    
  2. Verwijder de map /etc/mysql/mysql.conf.d/ gebruik makend van

    sudo rm -r /etc/mysql/mysql.conf.d/
    
  3. Controleer of u geen a hebt my.cnf bestand ergens anders opgeslagen (ik heb het in mijn huis gedaan!) of in /etc/alternatives/my.cnf gebruik

    sudo find / -name my.cnf
    
  4. Back-up en verwijderen /etc/mysql/debian.cnf bestanden (niet zeker als dat nodig is, maar voor het geval dat)

    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. In het geval dat uw syslog een fout laat zien zoals "mysqld: Can not read dir of '/etc/mysql/conf.d/'" maak een symbolische link:

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

    Dan zou de dienst moeten kunnen beginnen sudo service mysql start.

Dat werkte!


112
2018-04-25 13:38



na al deze bewerkingen (ik heb het eerder gedaan) heb ik nog steeds dezelfde foutmeldingen ... - Sergii P
Je moet elke my.cnf. * Verwijderen uit de map / etc / mysql. Zoek naar my.cnf.backup, my.cnf.fallback en my.cnf.migated - al deze bestanden moeten ook worden verwijderd (eerst een back-up maken!) - hitzi
@SergiiP sudo find / -name "my.cnf" kan van pas komen. - starbeamrainbowlabs
mysql-server-core- zou mysql-server-core-5.7 moeten zijn. Anders werkte als een charme. Dank je! - Anonymous
1. Je hebt mijn dag gemaakt! Ook ochtend en avond! Ik zat vast. - Max Yudin


Vandaag kreeg ik hetzelfde probleem, na het uitproberen van vele oplossingen, ontdekte ik dat het probleem het bevel was sudo systemctl disable mysql.service die ik gebruikte om MySQL automatisch starten uit te schakelen, dus om het werkend te krijgen, heb ik mijn MySQL-server opnieuw ingeschakeld met behulp van de opdracht sudo systemctl enable mysql.service en voer het upgradeproces opnieuw uit en het is perfect afgesloten.


54
2018-04-25 22:37



Ik rende naar hetzelfde probleem en dezelfde oplossing werkte voor mij. - Allen
Werkte voor mij. Heeft elke oplossing hier gewerkt, MySQL werkte na deze. - Błażej Michalik
Hetzelfde hier, dit zou toppost moeten zijn. - a1phanumeric
Werkte ook voor mij! Heel erg bedankt. Om expliciet te zijn, voer: sudo systemctl enable mysql.service en na die vlucht sudo apt install -f. - Fernando Paladini
Dit is alles wat ik moest doen. Ik had automatisch starten uitgeschakeld zoals beschreven door @naruto. Ik heb autostart ingeschakeld en "sudo apt upgrade" uitgevoerd. Nu opgelost. Zou het beste antwoord moeten zijn. Dit is een veel eenvoudigere, meer standaard en minder probleemgevoelige oplossing. - Jack Holt


De instructies hier repareerden het op mijn server: https://bugs.mysql.com/bug.php?id=72722

Ik begrijp de pijn van het hebben van uw systeem in een inconsistente staat   maar maak je geen zorgen over de hele situatie en doe het stap voor stap   om het systeem schoon te maken.

Laten we eerst de huidige status zien van alle mysql-pakketten op de machine   gebruikmakend van: dpkg -l | grep mysql (plak de uitvoer zonder de laatste   kolom)

De eerste kolom geeft de huidige status van het pakket aan. Hier zijn   de mogelijke opties:

ii) Geïnstalleerde rc) Verwijderd configuratie-bestanden bewaard (dit zou de staat moeten zijn   van alle pakketten die u hebt verwijderd met 'apt-get remove' dat wel doet   geen configuratiebestanden verwijderen onder / etc)

Om dit te laten werken, moet je 'apt-get purge' uitvoeren tot   u ziet geen pakketten in de bovenstaande lijst.

Houd er rekening mee dat sommige niet-mysql-server-pakketten zoals   python-mysql.connector en python-mysqldb, indien geïnstalleerd, hoeven dat niet te zijn   verwijderd omdat ze geen invloed hebben op deze situatie, maar als   verwijderd, kan problemen veroorzaken voor toepassingen die deze gebruiken.

We zullen zeker proberen onze documenten opnieuw te bezoeken om te zien hoe we dit kunnen doen   om gebruikers te beschermen tegen deze problemen. Bedankt voor het delen   uw feedback in detail met ons.


17
2018-04-22 22:05



Bedankt voor dpkg -l | grep mysql . Het hielp de richting te begrijpen. - Max Yudin


Uw foutmelding bevat deze regel:

subprocess installed post-installation script returned error exit status 1

Dit echter installed post-installation script wordt niet bij naam genoemd. Na veel knutselen, kwam ik erachter dat de naam (in mijn geval) is /var/lib/dpkg/info/mysql-server-5.7.postinst.

Open dit bestand met sudo vi /var/lib/dpkg/info/mysql-server-5.7.postinstof uw voorkeurseditor.

Wijzig bovenaan regel 3 (of zo): set -e naar set -x, bewaar het bestand. (keuze -e is "exit on errors", -x betekent "expliciet getoond commando uitgevoerd", vermoedelijk)

Rennen sudo dpkg --configure -a --log /tmp/dpkg.log (de - log-optie is optioneel). Je kunt ook gewoon vluchten apt upgrade als je weet dat dit het enige pakket is dat wordt geüpgraded.

Nu krijg je uitgebreide uitvoer van de mysql-server-5.7.postinst bash-script, en je kunt erachter komen wat er mis is.

In mijn geval het heeft tevergeefs geprobeerd te (her) rennen mysql_upgrade, maar dat was niet nodig voor mijn aangepaste mysql-installatie. ik was zeker Ik heb het eerder handmatig uitgevoerd, met succes, en alles was goed.

Dus ik heb lijn 321 (voor oudere mysqld-releases probeerregel 281) uitgebracht,

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

en de opdracht die eerder mislukt is, sudo apt upgrade (voer het nogmaals uit), is met succes afgesloten en dpkg heeft de foutstatus voor dit pakket verwijderd.

Nu kunt u de set -x naar set -e (hierboven genoemd). En optioneel uncomment de mysql-upgrade lijn.

Extra werk kan nodig zijn als u uw mysql-gegevenspartitie naar een niet-standaardlocatie hebt verplaatst. Ik heb de mijne verplaatst /var/lib/mysql/data naar een andere schijf via symlink. Dan moet je misschien de symbolische link tijdelijk verwijderen, vóór de postinst scriptmanipulatie. Maak het vervolgens opnieuw na het uitvoeren van de pakketupgrade.

Na de volgende kleine versie-upgrade van het mysqld debian-pakket, is dit probleem met de /var/lib/dpkg/info/mysql-server-5.7.postinst script kan weer verschijnen.


17
2017-07-01 12:03



Uiteindelijk heb ik alles opgeschoond en daarna de community mysql-server-versie gedownload en handmatig vanaf hier geïnstalleerd: dev.mysql.com/downloads/mysql - RyanNerd
Precies hetzelfde gebeurde met mij, en je stappen hebben het opgelost. Voor mij was mijn mysql_upgrade-oproep op regel 320. Kunt u uitleggen waarom het een niet-nulwaarde retourneert wanneer dit wordt aangeroepen vanuit het postinst-script? - emiliopedrollo
@emiliopedrollo Nee, ik kan het hier niet uitleggen. Maar ik denk dat het regelnummer nu 320 is omdat onlangs de pakketbeheerders het postinstall-script hebben uitgebreid, ik heb hetzelfde gezien de andere dag, tijdens de laatste run van de software-updater (die een nieuw mysql-deb-pakket bevatte) . - knb
Bedankt! Met set -e Ik was in staat om het exacte probleem op te lossen - MySQL had geen toegang voor de gebruiker van het ubuntu-systeem die is opgegeven in /etc/mysql/debian.cnf  . Dus ik heb deze gebruiker toegevoegd aan MySQL en privileges toegekend, uitgevoerd dpkg opnieuw en het werkte! - Allen Hamilton


In mijn geval zag ik met regel dat / var / run / mysqld / niet bestond en mysqld het bestand mysqld.sock niet kan maken.

Deze opdrachten hebben mijn probleem opgelost:

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

Nu:

systemctl start mysql

En mysql werkt weer :)


3
2018-04-27 08:14



Ik stel voor dat je deze regels toevoegt aan / usr / share / mysql / mysql-systemd-start vanaf regel 25, dan hoef je deze directory na elke reboot niet opnieuw te maken (sorry dat de regelreturn niet werkt in deze reactie) : als [ ! -d / run / msyqld]; dan mkdir -p -m0755 / run / mysqld || {echo "Kan niet maken / uitvoeren / mysqld"; uitgang 1; } chown mysql: mysql / run / mysqld || {echo "Kan niet chown / run / mysqld" zijn; uitgang 1; } fi - scoobydoo


In mijn geval zou ik het probleem kunnen oplossen door toe te voegen

# 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,

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

Kijk voor meer informatie op mijn antwoord (door ChristophS) bij stackoverloop.


3
2018-04-29 12:30





Geen van de antwoorden op deze pagina werkte voor mij.

Ik ging uiteindelijk naar de Oracle downloadpagina, downloaden mysql-apt-config_0.8.8-1_all.deben het installeren van MySQL vanuit 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 typfout. Domme SO staat me niet toe om een ​​personage te corrigeren. - Csaba Toth
@CsabaToth gecorrigeerd, bedankt! - ostrokach


Ik had hetzelfde probleem. Ik heb geprobeerd om mysql meerdere keren opnieuw te installeren, maar had geen succes.

Ik kwam erachter dat het probleem voor mij was, dat er alweer een mysql-proces aan de gang was.

In detail:

Nadat ik zorgvuldig heb gelezen logt in /var/log/mysql/error.log, en gevonden:

[ERROR] Kan server niet starten: binden op TCP / IP-poort: adres al in   gebruik

[ERROR] Heb je al een andere mysqld-server op poort:   3306?

Het lijkt erop dat een andere toepassing al de poort gebruikte.

Ik controleerde het met 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=

En ik heb het lopende proces gedood sudo kill -15 14706

Toen begon ik mysql: /etc/init.d/mysql start

Eindelijk werkt mysql voor mij! Ik hoop dat het iemand helpt.


0
2017-08-20 20:02