Я только что закончил обновление с 11.10 до 12.04.
Казалось, все работало без каких-либо сбоев, и все мое программное обеспечение и настройки работают нормально. Помимо MySQL.
Когда я пытаюсь:
sudo start mysql
Я получаю сообщение об ошибке:
start: Job failed to start
Где я могу диагностировать, в чем проблема? И (надеюсь) - как с этим разобраться?
(Я отключил автоматический запуск, следуя совету здесь если это имеет какое-то значение)
Обновление 1:
Оба выхода из:
cat /var/log/mysql.err cat /var/log/mysql.log
пусты.
Выход из 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
Обновление 2:
Как указано AWinter ниже - казалось, что MySQL автоматически исчез после обновления и должен был быть переустановлен.
Проверьте, что пакет mysql-server-5.1 был удален, похоже, он может сохраниться после обновления. У меня была та же ошибка, и мне пришлось очистить MySQL server 5.1 и 5.5, а затем переустановить.
Сначала сделайте резервную копию вашего каталога /var /lib /mysql/ на всякий случай.
sudo cp -R /var/lib/mysql/ ~/mysql
Затем очистите MySQL (это приведет к удалению php5-mysql и phpmyadmin, а также ряда других библиотек, поэтому будьте готовы переустановить некоторые элементы после этого.
sudo apt-get purge mysql-server-5.1 mysql-common
Удалите папку /etc/mysql/ и ее содержимое
sudo rm /etc/mysql/ -R
Затем проверьте, что ваши старые файлы базы данных все еще находятся в /var /lib /mysql/, если это не так, скопируйте их обратно в папку, затем выберите root:root
(запускайте их только в том случае, если файлов там больше нет)
У меня была такая же проблема, и для меня это было то, что файлы журнала InnoDB были другого размера, чем ожидал mysql, и во время обновления произошел сбой.
У меня был пользовательский конфигурационный файл, который был удален при обновлении до 12.04, который устанавливал размеры файлов журнала на что-то отличное от конфигурации по умолчанию.
Вы должны удалить файлы: /var/lib/mysql/ib_logfile*
После удаления файлов mysql теперь может запускаться и создавать новые файлы журналов размера по умолчанию.
У меня была такая же проблема, но ни один из приведенных выше ответов мне не помог. Поэтому в качестве последней надежды я попытался освободить немного места на диске. Я просто удаляю ненужные файлы журналов из /var /log, что освобождает около 2,5 Гб свободного места. Затем MySQL запустился нормально.
Это иногда случается, и хотя есть несколько различных проблем, которые могут привести к тому, что mysql не запустится, я напишу здесь некоторые из наиболее распространенных, о которых я знаю:
ПРИМЕЧАНИЕ - Поскольку я объясняю наиболее распространенные проблемы, я предполагаю, что вы уже пытались удалить и установить или просто переустановить службу mysql как таковую:
my.cnfфайла нет в каталоге по умолчанию. Он должен быть (по умолчанию) расположен в любом /etc/my.cnf или /etc/mysql/my.cnf.
Недостаточно места на жестком диске, где расположены файлы данных mysql. Если базы данных станут слишком большими и займут 100% жесткого диска, служба завершится сбоем.
После обновления убедитесь, что my.cnf файл находится в нужном месте. В зависимости от того, как вы обновились или с какой версии вы обновились, это может быть в /etc/my.cnf или /etc/mysql/my.cnf как упоминалось ранее. Также помните, что файл также может быть назван mysql.conf и не только my.cnf. Это происходит в тех случаях, когда вы загрузили двоичный файл с mysql.com.
Делая dmesg чтобы увидеть, что такое служба mysql, выдает сообщение об ошибке, поскольку оно выдает ошибку загрузки. Это также может объяснить, почему это происходит. Если вы наберете dmesg один в терминале, он покажет вам мир. То, что нам нужно, - это информация о mysql, поэтому сделайте что-то вроде этого: dmesg | grep mysql это выдаст вам любые строки, содержащие в себе mysql.
Убедитесь, что my.cnf или mysql.conf файл правильный. В 12.04 MySQL имеет версию 5.5, в 11.10 - версию 5.1. В файле conf могут быть некоторые изменения (на самом деле я это не проверял), и это может показаться глупым, но это, безусловно, может доставить вам некоторые проблемы.
Ошибки, связанные с проблемы с сокетом обычно являются виной my.cnf или mysql.conf файл, указывающий на неправильное место, ошибка обычно отображается как:
Не удается подключиться к локальному серверу MySQL через сокет '/var/run/mysqld/mysqld.sock'
Другой источник этой проблемы связан с mysql файл в /etc/init.d что он указывает не на ту папку, потому что он может использовать более старый скрипт, чем тот, который необходим для фактического mysql в системе (возможно, он неправильно обновился, не перезаписал конфигурационный файл и т. Д.). Поэтому просто отредактируйте любой из этих двух файлов и посмотрите, указывают ли они где-нибудь в другом месте, а затем просто выполните sudo service mysql restart чтобы проверить, работает ли это.
Чтобы лучше ознакомиться с выводами mysql, специфичными для ошибок, выполните следующие действия:
cat /var/log/mysql.err - Покажет вам ошибки mysql. Я бы сделал это так cat /var/log/mysql.err | less если вам случится увидеть слишком много информации, пролетевшей с тех пор, как less поможет вам прокрутить свой путь через выходные данные cat.
То же самое касается и cat /var/log/mysql.log Если вы видите там ошибку, возможно, включение ее в вопрос или в качестве комментария поможет быстрее ответить на этот вопрос.
Если у вас возникли проблемы с подключением и службой, которая на самом деле запущена, попробуйте проверить, разрешает ли брандмауэр сервера подключения через порт 3306 (Входящие подключения). После этого проверьте, не заблокировал ли маршрутизатор (если он применяется) порт 3306. В основном проведите сетевой тест, чтобы увидеть, откуда возникла проблема, связанная с портом, назначенным mysql.
Если все хорошо, чтобы проверить, запущена ли служба mysql, введите service mysql status
В крайнем случае. Если вы используете mysql, но не можете войти в систему, попробуйте выполнить следующее:
Остановите сервер MySQL:
sudo /etc/init.d/mysql stop или sudo service mysql stop
Начните с mysqld обслуживание вручную с ручной настройкой
sudo mysqld --skip-grant-tables &
(Не забудьте добавить & иначе вам придется открыть другой терминал. & отправляет процесс в фоновый режим, и вы можете завершить его с помощью того же терминала).
Войдите в базу данных mysql как корень
mysql -u root mysql
Введите следующее, заменив Мой пароль с вашим новым паролем
UPDATE user SET Password=PASSWORD('MyPASSWORD') WHERE User='root'; FLUSH PRIVILEGES; EXIT;
Этого должно быть достаточно, чтобы снова войти в вашу службу Mysql от имени root. Надеюсь, это поможет.
Я добавлю это, если кто-то столкнется с подобными проблемами. Я перепробовал все способы удаления и повторной установки, но безрезультатно.Ключом к поиску решения было то, что upstart помещает свои журналы ошибок в эту папку
/var/log/выскочка/
для mysql
/var/log/upstart/mysql.log
когда я открыл его, там было такое сообщение
Ошибка анализатора AppArmor для /etc/apparmor.d/usr.sbin.mysqld в/etc/apparmor.d/tunables/global в строке 15: не удалось открыть 'tunables/home'
Когда я заглянул в /etc/apparmor.d/настраиваемые/ В folderI отсутствовал домашний файл, поэтому я создал его
gedit /etc/apparmor.d/tunables/home и скопировал содержимое с другого компьютера, на котором были эти строки без комментариев
В моем случае это было намного проще, чем некоторые ответы здесь. Я нашел тот связанная ошибка на панели запуска и исправление было таким, как упоминалось там в комментарии 9:
sudo touch /etc/apparmor.d/local/usr.sbin.mysqldsudo service apparmor restart
После обновления я обнаружил, что mysql-server / mysql-server-5.5 не был установлен, и ни 5.1. Я переименовал my.cnf в my.cnf_old и попытался установить mysql-serven. Во время установки появилось сообщение об ошибке, что не удалось установить пароль root. После этого я проверил свои конфигурации, apparmor и так далее. Казалось, все было в порядке. Моей следующей попыткой было перенастроить mysql-сервер, но он пожаловался, что пакет не был установлен полностью. Поэтому я решил удалить и во время этого apt-get исправил пакет, и теперь он работает. Я не знаю почему, потому что я ничего не изменил.