11

Я получаю эту ошибку при попытке войти в 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 ответов10

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

При желании вы можете использовать aptitude, заменив apt-get --purge на aptitude

Очистить

sudo apt-get autoremove
sudo apt-get autoclean

Удалить MySQL dir

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
3

ВНИМАНИЕ: это опасно, ваш mysql НЕ будет в безопасности, и любой сможет подключиться, отредактировать и т.д. Ваши таблицы, не оставляйте сервер работающим с этой командой.

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

Если это работает, то могут быть проблемы с вашей information_schema или вашими таблицами mysql. Если это не работает, значит что-то не так с вашей установкой.

3

У меня была та же проблема с моей цифровой каплей объемом 512 МБ.

Оказалось, это связано с нехваткой памяти.

Непосредственным решением является перезапуск других служб для освобождения памяти, например.

sudo service apache2 restart

Тогда, надеюсь, с достаточным объемом памяти, вы сможете перезапустить MySQL

sudo service mysql restart

Долгосрочное решение - либо получить больше оперативной памяти, либо создать подкачку памяти.

3

Я также недавно получил эту проблему после обновления Ubuntu. Еще не уверен, в чем именно проблема. Один worakround, который работал на данный момент, чтобы запустить MySQL, хотя должен был сделать:

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

Это заставляет его работать, указывая, что apparmor остановил работу mysql, и объясняя, почему журналы, вероятно, тоже пусты: mysql не был разрешен для запуска.

Это остается странной проблемой, так как пока нет никаких "жалоб" из этого в /var/log/apparmor , и единственная контрольная запись в kern.log - от изменения профиля до режима жалоб.

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

3

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

df -h

Если это не так, ознакомьтесь с документацией MySQL по отладке сервера. Их myisamchk (если вы используете MyISAM) особенно полезны.

2

Посмотрите на ваши файлы журнала. По крайней мере, в Debian вы получаете журналы mysql * в /var/log .

1

Если бы эта же проблема, оказалось, решение смотрело мне в лицо. Драйв был полон. Вы не получаете журналы, потому что нет, где их писать .....

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, который также завершается сбоем без какого-либо вывода. Оглядываясь назад, можно сказать, что это неправильно, но отсутствие сообщения об ошибке затрудняет поиск каждой тривиальной проблемы.

0

Та же самая проблема мучила меня целую вечность на Ubuntu 12.04 Digital Ocean VPS с 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

Надеюсь, это поможет кому-то, кто испытывает такую же боль.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .