Moje ogólne uaktualnienie poszło dobrze, ale wciąż mam krytyczny problem polegający na tym, że serwer mysql nie jest w stanie zainstalować się sam i nic, co próbuję, nie działa.
Oto błąd, który widzę podczas próby instalacji / ponownej instalacji:
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)
Próbowałem go całkowicie usunąć, ale próbuję zainstalować MariaDB z powodu zależności (?). Wszelkie sugestie dotyczące tego, co mogę zrobić, aby to naprawić, byłyby bardzo mile widziane.
EDYCJA: Wygląda na to, że nie jestem jedyny: https://bugs.launchpad.net/ubuntu/+source/mysql-5.7/+bug/1573279
Odpowiedzi:
Instrukcje zamieszczone przez @ andrew-beerman są na dobrej drodze, choć nie są dla mnie jasne i wydają się zalecać więcej niż to konieczne. Ułożyłem odpowiedź z powyższego i pomocny post w wątku błędu.
Oto kroki, które podjąłem, aby to naprawić:
Kopię zapasową
my.cnf file
in/etc/mysql
i usunąć lub zmienić jego nazwęUsuń folder
/etc/mysql/mysql.conf.d/
za pomocąSprawdź, czy nie masz
my.cnf
pliku ukrytego gdzie indziej (zrobiłem w moim domowym katalogu!) Lub w/etc/alternatives/my.cnf
użyciuUtwórz kopię zapasową i usuń
/etc/mysql/debian.cnf
pliki (nie jestem pewien, czy to konieczne, ale na wszelki wypadek)W przypadku, gdy Twój syslog pokazuje błąd typu „mysqld: Nie można odczytać katalogu z„ /etc/mysql/conf.d/ ””, utwórz dowiązanie symboliczne:
Wtedy usługa powinna zacząć
sudo service mysql start
.To działało!
źródło
sudo find / -name "my.cnf"
może się przydać.Dzisiaj mam ten sam problem, po wypróbowaniu wielu rozwiązań stwierdziłem, że problemem było polecenie,
sudo systemctl disable mysql.service
którego użyłem do wyłączenia automatycznego uruchamiania MySQL, więc aby go uruchomić, ponownie włączyłem serwer MySQL za pomocą poleceniasudo systemctl enable mysql.service
i uruchomiłem ponownie proces aktualizacji i zakończyło się idealnie.źródło
sudo systemctl enable mysql.service
a po tym uruchomieniusudo apt install -f
.Twój komunikat o błędzie zawiera następujący wiersz:
Jednak
installed post-installation script
nie jest to wymienione z nazwy. Po wielu majstrowaniach dowiedziałem się, że jego nazwa to (w moim przypadku)/var/lib/dpkg/info/mysql-server-5.7.postinst
.Otwórz ten plik za pomocą
sudo vi /var/lib/dpkg/info/mysql-server-5.7.postinst
lub preferowanego edytora.Na górze zmień wiersz 3 (lub tak):
set -e
naset -x
, zapisz plik. (opcja-e
to „wyjście z błędów-x
”, prawdopodobnie „jawnie pokaż polecenie wykonane”)Uruchom
sudo dpkg --configure -a --log /tmp/dpkg.log
(opcja --log jest opcjonalna). Możesz również uruchomić,apt upgrade
jeśli wiesz, że będzie to jedyny pakiet, który zostanie zaktualizowany.Teraz otrzymujesz pełne dane wyjściowe
mysql-server-5.7.postinst
skryptu bash i możesz dowiedzieć się, co jest nie tak.W moim przypadku próba (ponownego) uruchomienia nie powiodła się
mysql_upgrade
, ale nie było to konieczne w przypadku mojej dostosowanej instalacji mysql. Byłem pewien, że już wcześniej uruchomiłem go ręcznie i wszystko poszło dobrze.Skomentowałem więc linię 321 (dla starszych wersji mysqld wypróbuj linię 281),
#mysql_upgrade --defaults-file=/etc/mysql/debian.cnf || result=$?
a polecenie, które wcześniej nie
sudo apt upgrade
działało (uruchom ponownie), zakończyło się pomyślnie, a dpkg usunął status błędu dla tego pakietu.Teraz możesz cofnąć
set -x
doset -e
(wspomniane powyżej). I opcjonalnie odkomentuj linię mysql-upgrade.Dodatkowa praca może być wymagana, jeśli partycja danych mysql została przeniesiona do niestandardowej lokalizacji. Przeniesiłem mój z
/var/lib/mysql/data
innego dysku za pośrednictwem dowiązania symbolicznego. Następnie może być konieczne tymczasowe usunięcie dowiązania symbolicznego, przedpostinst
manipulacją skryptem. Następnie utwórz go ponownie po uruchomieniu aktualizacji pakietu.Po kolejnej drobnej aktualizacji pakietu mysqld debian ten problem ze
/var/lib/dpkg/info/mysql-server-5.7.postinst
skryptem może pojawić się ponownie.źródło
set -e
niemu udało mi się znaleźć dokładny problem - MySQL nie miał dostępu dla określonego użytkownika systemu Ubuntu/etc/mysql/debian.cnf
. Dodałem więc tego użytkownika do MySQL i nadałem uprawnienia, uruchomiłemdpkg
ponownie i zadziałało!Instrukcje tutaj naprawiły to na moim serwerze: https://bugs.mysql.com/bug.php?id=72722
źródło
dpkg -l | grep mysql
. Pomogło zrozumieć kierunek.sudo apt-get purge <pkg-name>
naprawione przez edycję, ale: Użyłem znaków Unicode,<
ponieważ w przeciwnym razie nie byłby wyświetlany. Ostrzegam, kopiuj wklejając to polecenieW moim przypadku za pomocą strace zobaczyłem, że / var / run / mysqld / nie istnieje i mysqld nie może utworzyć pliku mysqld.sock.
Te polecenia rozwiązały mój problem:
Teraz:
I mysql znów działa :)
źródło
W moim przypadku mogę rozwiązać problem, dodając
do
/etc/apparmor.d/local/usr.sbin.mysqld
Aby uzyskać więcej informacji, zapoznaj się z moją odpowiedzią (autorstwa ChristophS) dotyczącą stackoverflow.
źródło
Miałem ten sam problem. Próbowałem ponownie zainstalować mysql kilka razy, ale bez powodzenia.
Zrozumiałem, że problemem dla mnie jest to, że inny proces mysql już działa.
W szczegółach:
Po dokładnym przeczytaniu loguję się
/var/log/mysql/error.log
i znalazłem:Wygląda na to, że inna aplikacja używała już portu.
Sprawdziłem to za pomocą
ps -aux | grep 3306
:I zabiłem trwający proces
sudo kill -15 14706
Potem uruchomiłem mysql:
/etc/init.d/mysql start
Nareszcie mysql działa dla mnie! Mam nadzieję, że to komuś pomoże.
źródło
Żadna z odpowiedzi na tej stronie nie działała dla mnie.
Skończyło się na stronie pobierania Oracle , pobieraniu
mysql-apt-config_0.8.8-1_all.deb
i instalowaniu MySQL z repozytorium Oracle:źródło
isntall
->install
literówka. Głupie SO nie pozwala mi poprawić jednej postaci.Mam problem na kilku serwerach. Poprawka polegała na uruchomieniu apt install phpmyadmin - reinstall
które rozwiązało powyższe (bez konieczności dotykania mysql później)
źródło