Jestem nowicjuszem na ziemi MySQL, więc proszę o wyrozumiałość.
Właśnie zakończyłem aktualizację 11.10 do 12.04.
Wydawało się, że wszystko działa bez żadnych problemów, a całe moje oprogramowanie i ustawienia działają dobrze. Oprócz MySQL.
Kiedy próbuję:
sudo start mysql
Otrzymuję błąd:
start: Job failed to start
Gdzie mogę zdiagnozować, na czym polega problem? I (mam nadzieję) - jak to rozwiązać?
(Wyłączyłem automatyczny start, postępując zgodnie ze wskazówkami tutaj, jeśli ma to jakieś znaczenie)
Aktualizacja 1:
Oba wyjścia:
cat /var/log/mysql.err
cat /var/log/mysql.log
są puste.
Wyjście dmesg | grep mysql
:
[ 1401.785141] type=1400 audit(1335619832.181:25): apparmor="STATUS" operation="profile_replace" name="/usr/sbin/mysqld" pid=16165 comm="apparmor_parser"
[ 1401.791089] init: Failed to spawn mysql main process: unable to execute: No such file or directory
Aktualizacja 2:
Jak wskazano poniżej przez AWinter - wydawało się, że MySQL zniknął automatycznie po aktualizacji i musiał zostać ponownie zainstalowany.
sudo rm /etc/mysql/ -R
- w moim przypadku po prostu go nie było. W każdym razie - na szczęście była to tylko lokalna instalacja do testowania Wordpress. Zastanawiam się, co by się stało na prawdziwym serwerze o_Oapt-get update
wcześniej, ponieważ usunęło dovecot i php5-mysql. Mogłem je ponownie zainstalować dopiero po aktualizacji. Gdy to zrobiłem, wszystko znów działało dobrze.-bash: cd: /var/lib/mysql/: Permission denied
i używaniesudo -i
nawet nie działa.źródło
Miałem ten sam problem i dla mnie było to, że pliki dziennika InnoDB były innego rozmiaru niż się spodziewał mysql i po aktualizacji nie powiodły się.
Miałem niestandardowy plik konfiguracyjny, który został usunięty podczas aktualizacji do wersji 12.04, który ustawia rozmiary plików dziennika na coś innego niż domyślna konfiguracja.
Musisz usunąć pliki: / var / lib / mysql / ib_logfile *
Po zniknięciu plików mysql może teraz uruchomić i utworzyć nowe pliki dziennika o domyślnym rozmiarze.
źródło
Większość błędów pojawi się, uruchamiając serwer w pełnym trybie innym niż demon i obserwując dane wyjściowe:
źródło
Miałem ten sam problem, ale żadna z powyższych odpowiedzi nie pomogła mi. Więc jako ostatnia nadzieja próbowałem zwolnić trochę miejsca na dysku. Po prostu usuwam niepotrzebne pliki dziennika z katalogu / var / log, co zwolniło trochę przestrzeni 2,5G. Następnie MySQL zaczął działać normalnie.
źródło
Zdarza się to czasem i chociaż istnieje kilka różnych problemów, które mogą spowodować, że mysql się nie uruchomi, napiszę tutaj niektóre z najczęstszych, o których wiem:
UWAGA - Ponieważ wyjaśniając najczęstsze problemy, zakładam, że próbowałeś już usunąć i zainstalować lub po prostu ponownie zainstalować usługę mysql w następujący sposób:
Aby zainstalować -
sudo apt-get install mysql-server mysql-client
Aby usunąć -
sudo apt-get remove mysql-server mysql-client
Aby wyczyścić (Usuń pliki + Konfiguracja) -
sudo apt-get purge mysql-server mysql-client
Aby ponownie zainstalować -
sudo apt-get install --reinstall mysql-server mysql-client
my.cnf
plik nie znajduje się w domyślnym katalogu. Powinien on (domyślnie) znajdować się w jednym/etc/my.cnf
lub/etc/mysql/my.cnf
.Za mało miejsca na dysku twardym, na którym znajdują się pliki danych mysql. Jeśli bazy danych staną się zbyt duże i zajmą 100% dysku twardego, usługa zakończy się niepowodzeniem.
Po aktualizacji sprawdź, czy
my.cnf
plik znajduje się we właściwym miejscu. W zależności od tego, w jaki sposób zaktualizowałeś lub z jakiej wersji zaktualizowałeś, może być w/etc/my.cnf
lub/etc/mysql/my.cnf
jak wspomniano wcześniej. Pamiętaj również, że plik może być nazwanymysql.conf
i nie tylkomy.cnf
. Dzieje się tak w przypadkach, gdy pobrałeś plik binarny z mysql.com .Wykonanie a,
dmesg
aby zobaczyć, czym jest usługa mysql, jest generowane, ponieważ pomaga komunikat o błędzie, ponieważ powoduje błąd ładowania. Może również powiedzieć, dlaczego tak się dzieje. Jeśli wpiszeszdmesg
sam w terminalu, pokaże ci świat. Chcemy informacji o mysql, więc zrób coś takiego:dmesg | grep mysql
spowoduje to wyświetlenie wszystkich wierszy zawierających mysql.Sprawdź,
my.cnf
czymysql.conf
plik lub jest poprawny. W 12.04 MySQL jest w wersji 5.5, w 11.10 jest to wersja 5.1. Może mieć pewne zmiany w pliku conf (właściwie tego nie sprawdziłem) i może zabrzmieć głupio, ale z pewnością może sprawić ci problemy.Błędy związane z problemami związanymi z gniazdami są zwykle błędami pliku
my.cnf
lubmysql.conf
wskazującymi niewłaściwe miejsce, błąd zwykle pokazuje się jako:Inne źródło tego problemu jest związane z
mysql
plikiem/etc/init.d
, ponieważ wskazuje na niewłaściwy folder, ponieważ może używać starszego skryptu niż ten wymagany dla rzeczywistego mysql w systemie (może nie zostać poprawnie zaktualizowany, nie nadpisuje plik konfiguracyjny itp.). Po prostu edytuj dowolny z tych dwóch plików i sprawdź, czy wskazują one gdzie indziej, a następnie po prostu zrób,sudo service mysql restart
aby sprawdzić, czy to działa.Aby lepiej przyjrzeć się konkretnym wynikom błędu mysql, wykonaj następujące czynności:
cat /var/log/mysql.err
- Pokaże błędy MySQL. Zrobiłbym to w ten sposób,cat /var/log/mysql.err | less
jeśli zobaczysz, że przelatuje za dużo informacji, ponieważless
pomoże ci przewinąć wyjściecat
.To samo dotyczy
cat /var/log/mysql.log
Jeśli zobaczysz błąd, być może postawienie go w pytaniu lub jako komentarz pomoże szybciej odpowiedzieć na to pytanie.Jeśli występują problemy z połączeniem i usługa, którą faktycznie działa, spróbuj sprawdzić, czy zapora ogniowa serwera zezwala na połączenia przez port 3306 (połączenia przychodzące). Następnie sprawdź, czy router (jeśli dotyczy) nie zablokował portu 3306. Zasadniczo wykonaj test sieci, aby zobaczyć, skąd pochodzi problem związany z portem przypisanym do mysql.
Jeśli wszystko jest w porządku, sprawdź, czy usługa mysql działa
service mysql status
W ostateczności. Jeśli akurat używasz mysql, ale nie możesz się zalogować, spróbuj wykonać następujące czynności:
Zatrzymaj serwer MySQL:
sudo /etc/init.d/mysql stop
lubsudo service mysql stop
Uruchom
mysqld
usługę ręcznie z ręczną konfiguracjąsudo mysqld --skip-grant-tables &
(Pamiętaj, aby dodać & inaczej będziesz musiał otworzyć inny terminal. & Wysyła proces do tła i możesz zabić używając tego samego terminala).
Zaloguj się do bazy danych mysql jako ROOT
mysql -u root mysql
Wpisz następujące polecenie, zastępując MojePASWORD nowym hasłem
UPDATE user SET Password=PASSWORD('MyPASSWORD') WHERE User='root';
FLUSH PRIVILEGES;
EXIT;
To powinno wystarczyć, aby ponownie zalogować się do usługi Mysql jako root. Mam nadzieję, że to pomoże.
źródło
/etc/mysql/my.cnf
W moim przypadku jest plik my.cnf . Czy to poprawna lokalizacja?dmesg
daje mi wiele możliwości, których nie rozumiem: / Rzeczywiście zainstalowałem 5.1 - czy to ma jakieś konsekwencje?Miałem ten sam problem po przeprowadzeniu aktualizacji do Ubuntu Server 12.04 LTS
wystarczyło to naprawić, chociaż narzekało na starą bazę danych spotweb. Naprawiłem to, usuwając spotweb:
i rekonfiguracja mysql:
źródło
Dodam ten przypadek, gdy ktoś napotyka podobne problemy. Próbowałem odinstalować i ponownie zainstalować bezskutecznie. Kluczem do znalezienia rozwiązania było to, że upstart umieszcza dzienniki błędów w tym folderze
/ var / log / upstart /
dla mysql
/var/log/upstart/mysql.log
kiedy otworzyłem, miałem tę wiadomość
Kiedy szukałem w folderze /etc/apparmor.d/tunables/ , brakowało w nim pliku domowego, więc utworzyłem jeden
gedit /etc/apparmor.d/tunables/home i skopiował zawartość z innego komputera, który miał te nieskomentowane wiersze
ktoś ma tutaj podobny problem
https://bugs.launchpad.net/ubuntu/+source/mysql-5.5/+bug/982303
potem mogłem zrestartować usługę
źródło
W moim przypadku było to o wiele łatwiejsze niż niektóre odpowiedzi tutaj. Znalazłem powiązany błąd na starterze, a poprawka była taka, jak wspomniano w komentarzu 9:
źródło
Po aktualizacji zauważyłem, że mysql-server / mysql-server-5.5 nie został zainstalowany i żaden 5.1. Zmieniłem nazwę my.cnf na my.cnf_old i próbowałem zainstalować mysql-serven. Podczas instalacji pojawił się komunikat o błędzie, że nie można ustawić hasła roota. Następnie sprawdziłem moje konfiguracje, apparmor i tak dalej. Wszystko wydawało się w porządku. Moja kolejna próba polegała na ponownej konfiguracji serwera mysql, ale narzekałem, że pakiet nie został całkowicie zainstalowany. Więc postanowiłem odinstalować i podczas tego apt-get naprawiłem pakiet i teraz działa. Nie wiem dlaczego, bo nic nie zmieniłem.
źródło
Miałem podobne problemy, ale szybko wytropiono mnie w kłopoty, które, jak pamiętam, dawały mi ten problem wcześniej.
Jeśli wprowadzisz zmiany w tych ustawieniach, a system używa apparmor, może być również konieczne dostosowanie /etc/apparmor.d/usr.sbin.mysqld. Na przykład. te linie zostały dodane (aby umożliwić dowiązanie symboliczne do my.cnf i prawdopodobnie umożliwić odczytanie pliku dowiązania symbolicznego):
/ usr / sbin / mysqld {... /etc/mysql/*.cnf lr, /path/to/symlinked/my.cnf r, ...}
źródło
W moim przypadku próbowałem zainstalować MySQL na nowej instalacji Ubuntu 12.04, ale nie rozumiałem, dlaczego wystąpił błąd podczas ustawiania hasła dla użytkownika root. Wypróbowałem wszystkie powyższe rozwiązania, ale nic nie mogłem zrobić.
Potem zdecydowałem się wyczyścić / usunąć wszystko, odinstalowałem serwer MySQL i usunąłem wszystkie jego foldery (/ etc / mysql / i / var / lib / mysql /), ostatecznie dzięki pewnej losowości nie dał żadnego błędu podczas ponowna instalacja i udało mi się ustawić hasło i uruchomić instancję serwera.
źródło
W terminalu możesz zainstalować go ponownie i uruchomić mój.cnf możesz wpisać:
to może działać w ten sposób.
źródło
Mam problem, że dodanie
performance_schema
zgodnie[mysqld]
z/etc/mysql/my.conf
przyczyn tego niepowodzenia. Usunięto tę linię i mysql mógł zacząć od nowa.Edycja: Okazuje się Jeden gigabajt pamięci RAM to po prostu za mało, aby uruchomić mysqld z włączoną opcją performance_schema. Wpadłem na 3 koncerty i działało dobrze.
źródło