MySQL nie chce się uruchomić!

12

Otrzymuję ten błąd podczas próby zalogowania się do MySQL z wiersza poleceń:

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)

Myślę, że to oznacza, że ​​MySQL nie został jeszcze uruchomiony. Więc staram się to uruchomić:

sudo /etc/init.d/mysql start

i dostaję tę wiadomość:

* Starting MySQL database server mysqld [fail] 

Gdzie szukać / co zrobić, aby uruchomić MySQL? Używam Ubuntu 8.04 i zainstalowałem MySQL poprzez apt-get. Byłem w stanie go uruchomić i użyłem go kilka razy, więc nie wiem, dlaczego przestał działać.

Aktualizacja: Po uruchomieniu statusu sudo /etc/init.d/mysql pojawia się komunikat:

* MySQL is stopped.

Aktualizacja nr 2: Moje pliki dziennika (/var/log/mysql.log & /var/log/mysql.err) są puste (jeśli są właściwe)

Andrzej
źródło
co się stanie, gdy status sudo /etc/init.d/mysql
emgee

Odpowiedzi:

10

Na Ubuntu 12.04 miałem ten sam problem po zmianie rozmiarów buforów w pliku /etc/mysql/my.cnf, myślę, że trochę mnie poniosło. W każdym razie po próbie zmiany ich z powrotem na domyślne ustawienie MySQL nadal nie chce się uruchomić.

Próbowałem rozwiązać kilka różnych metod, zauważyłem, że brakuje pliku /var/run/mysql/mysql.sock. Może to być problem, więc możesz to sprawdzić, a jeśli go nie ma, możesz go zastąpić, wykonując następujące czynności:

sudo touch /var/run/mysql/mysql.sock
sudo chown mysql /var/run/mysql/mysql.sock

To NIE naprawiło problemu dla mnie! Ale może dla niektórych.

Musiałem całkowicie przeinstalować MySQL, aby to zrobić, musisz użyć polecenia sudo. Kroki do całkowitego usunięcia i ponownej instalacji MySQL są następujące:

Usuń MySQL

sudo apt-get --purge remove mysql-server
sudo apt-get --purge remove mysql-client
sudo apt-get --purge remove mysql-common

Opcjonalnie można użyć aptitude, zastępując apt-get --purge z takiego

Sprzątać

sudo apt-get autoremove
sudo apt-get autoclean

Usuń MySQL reż

sudo rm -rf /etc/mysql

Zainstaluj MySQL

sudo apt-get install mysql-server mysql-client

MySQL powinien teraz działać, możesz to sprawdzić, wykonując następujące czynności:

sudo service mysql status

Powinieneś zobaczyć

mysql start/running, process xxxxx

Mam nadzieję, że to pomaga i pomyślałem, że mogę dodać po zrobieniu tego wszystkie moje bazy danych i tabele, które są nadal dostępne, jednak musiałem odtworzyć użytkowników i hasła do tych baz danych.

Uwaga: Jeśli posiadasz rozszerzenie mysql dla php, musisz je również zainstalować ponownie.

sudo apt-get install php5-mysql
Kyle Coots
źródło
To działało dla mnie, ale musiałem to zmienić na: sudo touch /var/run/mysqld/mysqld.socki dowiedziałem się o tym od końca /var/log/syslog (np. Zmiana na mysqld)
Programster
Czy to /var/run/mysqldczy /var/run/mysql?
CMCDragonkai
dotknięcie pliku skarpety to zły pomysł - utworzyłeś zwykły plik, gdy tak naprawdę jest to gniazdo, które jest specjalnym rodzajem pliku.
Criggie,
3

OSTRZEŻENIE: Jest to niebezpieczne, twój mysql NIE będzie bezpieczny i każdy będzie mógł łączyć, edytować itp. Tabele, nie pozostawiaj serwera działającego z tym poleceniem.

Spróbuj uruchomić go w trybie awaryjnym: /usr/local/mysql/bin/safe_mysqld --user=mysql --skip-grant-tables

Jeśli to zadziała, mogą występować problemy z twoją informacją lub schematem (tabelami) mysql. Jeśli to nie działa, oznacza to, że coś jest nie tak z instalacją.

lilott8
źródło
1
To dobrze, daje szczegółowe błędy w syslog. Komenda uległa zmianie, w Ubuntu 12.04 jestsudo /usr/bin/mysqld_safe --user=mysql --skip-grant-tables
newz2000
3

Sprawdź swoje pliki dziennika jak w innych odpowiedziach. Sprawdź także, czy masz wystarczającą ilość (lub jakiekolwiek miejsce na dysku). MySQL może zachowywać się w ten sposób na pustej partycji.

df -h

Jeśli tak nie jest, sprawdź dokumentację MySQL dotyczącą debugowania serwera . Ich myisamchk(jeśli używasz MyISAM) jest szczególnie przydatny.

Aidan Fitzpatrick
źródło
3

Niedawno dostałem ten problem po aktualizacji Ubuntu. Nie jestem jeszcze pewien, na czym dokładnie polega problem. Jednym z problemów, które działało w tej chwili, aby uruchomić mysql, było:

sudo aa-complain /etc/apparmor.d/*mysql*

To sprawia, że ​​działa, wskazując, że apparmor zatrzymał działanie mysql, i wyjaśniając, dlaczego dzienniki są prawdopodobnie również puste: mysql nie mógł działać.

Pozostaje to dziwnym problemem, ponieważ do tej pory nie ma „skarg” z tego /var/log/apparmorpowodu, a jedynym wpisem dotyczącym kontroli w kern.log jest zmiana profilu na tryb narzekań.

Zauważ, że robiąc to, dodałem również (pusty) /etc/apparmor.d/local/usr.sbin.mysqlplik, ponieważ rozkazujący aa narzekał, że nie znalazł tego pliku.

użytkownik143757
źródło
Dziękuję Ci bardzo! Po zbliżeniu się do wyrwania włosów, to w końcu to naprawiło.
Olathe
3

Miałem ten sam problem z moją kroplą 512 MB Digital Ocean.

Okazało się, że jest to spowodowane niewystarczającą pamięcią.

Natychmiastowym rozwiązaniem jest ponowne uruchomienie innych usług w celu zwolnienia pamięci, np.

sudo service apache2 restart

Mamy nadzieję, że przy wystarczającej ilości pamięci możesz ponownie uruchomić mysql

sudo service mysql restart

Długofalowym rozwiązaniem jest uzyskanie większej ilości pamięci RAM lub utworzenie pamięci wymiany .

samwize
źródło
2

Spójrz na swoje pliki dziennika. Przynajmniej na Debianie, logujesz się do mysql * /var/log.

innaM
źródło
3
mysql.err i mysql.log są puste
Andrew
1

Miałem ten sam problem, okazało się, że rozwiązanie wpatrywało się we mnie w twarz. Napęd był pełny. Nie dostajesz dzienników, ponieważ nie ma gdzie je zapisać .....

Boatcoder
źródło
0

Ten sam problem nękał mnie od wieków na Ubuntu 12.04 Digital Ocean VPS z mysql 5.6 zainstalowanym z PPA. Symptomy polegały na tym, że plik mysql.sock został /var/run/mysqld/mysql.sockusunięty, ale nigdy nie został ponownie utworzony, więc musiałem ręcznie uruchamiać następujące polecenia przy każdej aktualizacji mysql lub ponownym uruchomieniu serwera:

sudo touch /var/run/mysqld/mysql.sock
sudo chown mysql /var/run/mysqld/mysql.sock

To było z odpowiedzi Kyle'a C (z wyjątkiem mysqld zamiast mysql). W końcu obniżyłem wersję mysql 5.5, która pojawia się, gdy normalnie wykonasz sudo apt-get install mysql-serverpolecenie. Nie było to jednak proste, oto co musiałem zrobić:

# Manually get mysql running if it is not
sudo touch /var/run/mysqld/mysql.sock
sudo chown mysql /var/run/mysqld/mysql.sock
sudo service mysql start

# take a dump of all databases 
# we are going to remove the mysql files so don't skip this)
mysqldump -u root -p > all-databases.sql

# Completely remove mysql
sudo apt-get remove --purge mysql-server mysql-client mysql-common
sudo apt-get autoremove
sudo apt-get autoclean

# Remove mysql 5.6 from debs (otherwise it will reinstall 5.6)
rm /etc/apt/sources.list.d/ondrej-(mysql something please check)

# remove a flag that would prevent the installation
# because it is seen as a downgrade
sudo rm /var/lib/mysql/debian-5.6.flag

# I had to remove the mysql files as well
# reference http://ubuntuforums.org/showthread.php?t=1998260&page=3
rm -rf /var/lib/mysql
rm -rf /etc/mysql*

# Install mysql
sudo apt-get install mysql-server mysql-client mysql-common php5-mysql

# manually update the all-databases.sql file and 
# remove all STATS_PERSISTENT clauses on table creation statments

# re import the databses
mysql -u root -p < all-databases.sql

# restart apache
sudo service apache2 restart

# at this point my wordpress site stated error connecting to database.
# This was resolved by logging into mysql and running:
FLUSH PRIVILEGES

Mam nadzieję, że pomoże to komuś cierpiącemu na taki sam ból.

Programista
źródło
0

sądzę, że to może pomóc innym ... więc oto jest.

Chciałem migrować mój mysql 5.5 (domyślny ubuntu) do nowego 5.7
(chciałem grać z nowym rodzimym typem JSON)

Postępowałem zgodnie z instrukcjami, aby zainstalować najnowszą wersję ....
ale MySQL nie chciał się uruchomić.

Spędziłem trochę czasu, szukając, a następnie znalazłem ten wiersz w /var/log/mysql/errors.log:

unknown variable 'key_buffer=16M'

i jest to coś, co jest ustawione, /etc/mysql/my.cnfże podczas aktualizacji zdecydowałem się zachować.

Tak, że po dość proste:
zastąpić Moje strony my.cnfz my.cnf.dpkg-distwersji znajduje się w tym samym katalogu ...

Potem musiał biec

sudo mysql_upgrade -u root -p sudo service mysql restart

a teraz MySQL jest ponownie uruchomiony

dGo
źródło
0

Znaleziono inną odmianę tego, co może być nie tak. Przeniosłem katalog danych i okazało się, że zapomniałem otworzyć katalog dla użytkownika mysql, który również zawiedzie bez żadnego wyjścia. Oczywiście z perspektywy czasu źle, ale brak komunikatu o błędzie sprawia, że ​​każdy trywialny problem jest trudny do znalezienia.

Kdansky
źródło