MySQL не запуститься!


12

Я отримую цю помилку при спробі увійти в MySQL з командного рядка:

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

Я думаю, це означає, що MySQL ще не був запущений. Тому я намагаюся почати це:

sudo /etc/init.d/mysql start

і я отримую це повідомлення:

* Starting MySQL database server mysqld [fail] 

Де я дивлюсь / що робити, щоб запустити MySQL? Я запускаю Ubuntu 8.04 і встановлюю MySQL через apt-get. Мені вдалося розпочати це і кілька разів користувався ним, тому не знаю, чому він просто перестав працювати.

Оновлення: Під час запуску статусу sudo /etc/init.d/mysql я отримую повідомлення:

* MySQL is stopped.

Оновлення №2: Мої файли журналів (/var/log/mysql.log & /var/log/mysql.err) порожні (якщо це правильні)


що трапляється, коли ти
судо

Відповіді:


10

У Ubuntu 12.04 у мене була ця сама проблема після зміни розмірів буфера у файлі /etc/mysql/my.cnf, я думаю, я трохи захопився. У будь-якому разі, намагаючись змінити їх назад до налаштувань за замовчуванням, MySQL все ще не запустився.

Я спробував кілька різних методів, щоб вирішити це, я помітив, що /var/run/mysql/mysql.sock відсутній. Це може бути проблемою, тому ви можете перевірити там, і якщо його немає, ви можете замінити його, зробивши наступне:

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

Це НЕ вирішило проблему для мене! Але це може бути для деяких.

Що мені довелося зробити - це повністю перевстановити MySQL, для цього вам потрібно буде використовувати команду sudo. Крок до повного видалення та перевстановлення MySQL є наступним:

Видаліть MySQL

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

За бажанням ви можете використовувати здатність, замінивши apt-get --purge на здатність

Прибирати

sudo apt-get autoremove
sudo apt-get autoclean

Видаліть MySQL реж

sudo rm -rf /etc/mysql

Встановити MySQL

sudo apt-get install mysql-server mysql-client

MySQL тепер має працювати, ви можете перевірити це, виконавши наступне:

sudo service mysql status

Ви повинні побачити

mysql start/running, process xxxxx

Сподіваюся, це допомагає, і я подумав, що я можу додати після цього всі мої бази даних та таблиці, де вони ще доступні, проте мені довелося відтворити користувачів та паролі для цих баз даних.

Примітка. Якщо у вас було розширення mysql для php, вам також потрібно буде встановити його.

sudo apt-get install php5-mysql

Це працює для мене , але я повинен був змінити його: sudo touch /var/run/mysqld/mysqld.sockі я дізнався від кінця /var/log/syslog (наприклад , зміна туздИ)
Programster

Це /var/run/mysqldчи /var/run/mysql?
CMCDragonkai

торкатися файлу шкарпетки - погана ідея - ви створили звичайний файл, коли він справді сокет, який є спеціальним файлом.
Criggie

3

ПОПЕРЕДЖЕННЯ: Це небезпечно, ваш mysql НЕ буде безпечним, і кожен зможе підключити, відредагувати тощо ваші таблиці, не залишайте ваш сервер працює з цією командою.

Спробуйте запустити його в безпечному режимі: /usr/local/mysql/bin/safe_mysqld --user=mysql --skip-grant-tables

Якщо це працює, то можуть виникнути проблеми з вашою інформаційною схемою або вашими таблицями (-ми) mysql. Якщо це не працює, то з вашою установкою щось не так.


1
Це добре, це дає вам докладні помилки в syslog. Команда змінилася, на Ubuntu 12.04 цеsudo /usr/bin/mysqld_safe --user=mysql --skip-grant-tables
newz2000

3

Перевірте свої файли журналів, як і в інших відповідях. Також перевірте, чи є у вас достатньо місця (або будь-якого місця на диску). MySQL може вести себе таким чином на порожньому розділі.

df -h

Якщо це не так, перегляньте документи MySQL щодо налагодження сервера . Їх myisamchk(якщо ви використовуєте MyISAM) особливо корисно.


3

Також я нещодавно отримав цю проблему після оновлення ubuntu. Ще не впевнений, у чому саме проблема. Одне дивовижне середовище, яке працювало на даний момент, щоб запустити mysql, хоч було зробити:

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

Це змушує працювати, вказуючи на те, що apparmor зупинив функцію запуску mysql, і пояснюючи, чому журнали порожні, ймовірно, теж: mysql не було дозволено запускати.

Залишається дивним питання, оскільки до цього часу немає жодних "скарг" на це /var/log/apparmor, а єдиний запис аудиту в kern.log - це зміна профілю на режим подання скарг.

Зауважте, що роблячи це, я також додав (порожній) /etc/apparmor.d/local/usr.sbin.mysqlфайл, оскільки команда aa-скаргу скаржилася на те, що не знайшла цей файл.


Велике спасибі! Після наближення до того, щоб зірвати волосся, це остаточно виправило його.
Олате

3

У мене була така ж проблема з моєю крапелькою цифрового океану на 512 Мб.

Виявилося це через недостатню пам’ять.

Безпосереднім рішенням є перезапуск інших служб для звільнення пам'яті, наприклад.

sudo service apache2 restart

Тоді, сподіваємось, достатньо пам'яті, ви зможете перезапустити mysql

sudo service mysql restart

Довгострокове рішення - або отримати більше оперативної пам'яті, або створити своп-пам'ять .


2

Погляньте на свої файли журналів. Принаймні, на Debian ви отримуєте журнали mysql * /var/log.


3
Обидва mysql.err та mysql.log порожні
Ендрю

1

Була ця сама проблема, виявляється, рішення дивилося мені в обличчя. Привід був повний. Ви не отримуєте журналів, оскільки немає де їх написати .....


0

Ця ж проблема мучила мене впродовж віків на цифровій VPS Ubuntu 12.04 Digital Ocean з mysql 5.6, встановленою з PPA. Симптоми полягали в тому, що файл mysql.sock /var/run/mysqld/mysql.sockбуде видалений, але ніколи не відтворений, тому мені потрібно було вручну запускати такі команди щоразу, коли mysql оновлювався або перезавантажувався сервер:

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

Це було з відповіді Кайла С (за винятком mysqld замість mysql). Врешті-решт я перейшов до mysql 5.5, який приходить, коли ви зазвичай виконуєте sudo apt-get install mysql-serverкоманду. Однак це було не прямо, тому ось що мені довелося зробити:

# 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

Сподіваємось, це допоможе комусь іншому, що відчуває той самий біль.


0

Думаю, це може допомогти іншим ... так ось воно.

Я хотів перенести мій mysql 5.5 (за замовчуванням ubuntu) на новий 5.7
(хотів пограти з новим нативним типом JSON)

Я дотримувався інструкцій щодо встановлення останньої версії ....
але MySQL не хотів запускатися.

Провів доволі деякий час, а потім знайшов цей рядок у /var/log/mysql/errors.log:

unknown variable 'key_buffer=16M'

і це те, що встановлено в /etc/mysql/my.cnfтому, що під час оновлення я вирішив зберегти.

Так, досить легко після того, що:
замінив мій my.cnfз my.cnf.dpkg-distверсією , розташованої в тій же директорії ...

Тоді довелося бігти

sudo mysql_upgrade -u root -p sudo service mysql restart

і тепер MySQL створюється резервна копія


0

Знайшов інший варіант щодо того, що може бути не так. Я перемістив каталог даних, і, виявляється, я забув зафіксувати каталог для користувача mysql, який також виходить з ладу, не маючи жодного результату. Очевидно неправильно в огляді, але відсутність повідомлення про помилку робить кожну тривіальну проблему важко знайти.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.