"Не удалось запустить основной процесс mysql: невозможно выполнить: нет такого файла или каталога"

Я новичок на MySQL, так что терпите меня.

Я только что закончил обновление 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 автоматически исчезал после обновления и должен был быть переустановлен.

14 ответов

Решение

Убедитесь, что пакет 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/, если их нет, затем скопируйте их обратно в папку и затем выполните команду chown root: root.

(запускайте их, только если файлов больше нет)

sudo mkdir /var/lib/mysql/
sudo chown root:root /var/lib/mysql/ -R
sudo cd ~/mysql/
sudo cp * /var/lib/mysql/ -R

Следующая установка сервера MySQL

sudo apt-get install mysql-server

Наконец, переустановите все недостающие пакеты, такие как phpmyadmin и php5-mysql.

sudo dpkg-reconfigure mysql-server-5.5

У меня была та же проблема, и для меня это было то, что файлы журнала InnoDB были другого размера, чем ожидал mysql, и потерпели неудачу во время обновления.

У меня был пользовательский файл конфигурации, который был удален при обновлении до 12.04, который устанавливал размеры файла журнала, отличные от конфигурации по умолчанию.

Вы должны удалить файлы: /var/lib/mysql/ib_logfile*

После того, как файлы пропали, mysql может теперь начать и создать новые файлы журнала по умолчанию.

Большинство ошибок будет отображаться при запуске сервера в подробном не-демоническом режиме и просмотре вывода:

sudo mysqld --verbose

У меня была такая же проблема, но ни один из ответов выше не помог мне. В качестве последней надежды я попытался освободить место на диске. Я просто удаляю ненужные файлы журналов из /var/log, которые освобождают пространство 2.5G. Затем MySQL начал нормально.

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

ПРИМЕЧАНИЕ. - Поскольку я объясняю наиболее распространенные проблемы, я предполагаю, что вы уже пытались удалить и установить или просто переустановили службу mysql следующим образом:

Установить - sudo apt-get install mysql-server mysql-client
Удалять - sudo apt-get remove mysql-server mysql-client
Очистить (Удалить файлы + Конфиг) - sudo apt-get purge mysql-server mysql-client
Переустановить - sudo apt-get install --reinstall mysql-server mysql-client

  1. my.cnfФайл не находится в каталоге по умолчанию. Должно быть (по умолчанию) находиться в любом /etc/my.cnf или же /etc/mysql/my.cnf,

  2. Недостаточно места на жестком диске, где находятся файлы данных mysql. Если базы данных становятся слишком большими и занимают 100% жесткого диска, служба не будет работать.

  3. После обновления убедитесь, что my.cnf файл находится в правильном месте. В зависимости от того, как вы обновили или с какой версии вы обновились, это может быть в /etc/my.cnf или же /etc/mysql/my.cnf как уже упоминалось ранее. Также помните, что файл также может быть назван mysql.conf и не только my.cnf, Это происходит в тех случаях, когда вы скачали бинарный файл с mysql.com.

  4. Делать dmesg чтобы увидеть, что служба mysql выбрасывает, помогает сообщение об ошибке, поскольку оно выдает ошибку загрузки. Можно также сказать, почему это происходит. Если вы печатаете dmesg один в терминале он покажет вам мир. Нам нужна информация о MySQL, поэтому сделайте что-то вроде этого: dmesg | grep mysql это бросит вам любые строки, которые содержат mysql в них.

  5. Проверьте, что my.cnf или же mysql.conf файл правильный. В 12.04 MySQL - это версия 5.5, в 11.10 - это версия 5.1. Он может иметь некоторые изменения в файле conf (на самом деле это не проверял), и это может звучать глупо, но это может доставить вам некоторые проблемы.

  6. Ошибки, связанные с проблемами сокетов, обычно являются ошибкой my.cnf или же mysql.conf файл, указывающий на неправильное место, они обычно отображают как ошибку:

    Не удается подключиться к локальному серверу MySQL через сокет '/var/run/mysqld/mysqld.sock'

    Другой источник этой проблемы связан с mysql файл в /etc/init.d что он указывает на неправильную папку, потому что он может использовать более старый сценарий, чем тот, который необходим для фактического mysql в системе (возможно, он не обновился правильно, не перезаписал файл конфигурации и т. д.). Так что просто отредактируйте любой из этих двух файлов и посмотрите, указывают ли они куда-то еще, а затем просто сделайте sudo service mysql restart чтобы проверить, работает ли это.

  7. Чтобы лучше рассмотреть специфичные для ошибок выходные данные mysql, сделайте следующее:

    cat /var/log/mysql.err - покажет вам ошибки MySQL. Я бы сделал это так cat /var/log/mysql.err | less если вам случится увидеть слишком много информации less поможет вам прокрутить свой путь через вывод cat,

    То же самое касается cat /var/log/mysql.log Если вы видите ошибку там, возможно, добавив ее в вопрос или в качестве комментария, поможет ответить на этот вопрос быстрее.

  8. Если вы страдаете от проблем с подключением и службы, которая на самом деле работает, попробуйте проверить, разрешает ли брандмауэр сервера подключений через порт 3306 (Входящие подключения). После этого проверьте, не заблокировал ли маршрутизатор (если он применяется) порт 3306. В основном, выполните сетевой тест, чтобы выяснить, откуда возникла проблема, связанная с портом, назначенным для mysql.

Если все хорошо, чтобы проверить, работает ли служба mysql типа service mysql status

В крайнем случае. Если вы используете mysql, но не можете войти, попробуйте следующее:

  1. Остановите сервер MySQL:

    sudo /etc/init.d/mysql stop или же sudo service mysql stop

  2. Начать mysqld обслуживание вручную с ручной настройкой

    sudo mysqld --skip-grant-tables &

    (Не забудьте добавить &, иначе вам придется открыть другой терминал. & Отправляет процесс в фоновый режим, и вы можете убить его, используя тот же терминал).

  3. Войдите в базу данных mysql как ROOT

    mysql -u root mysql

  4. Введите следующее, заменив MyPASSWORD новым паролем

    UPDATE user SET Password=PASSWORD('MyPASSWORD') WHERE User='root';
    FLUSH PRIVILEGES;
    EXIT;

Это необходимо для того, чтобы снова войти в службу Mysql как root. Надеюсь, поможет.

У меня была такая же проблема после обновления до Ubuntu Server 12.04 LTS, работающего

sudo apt-get install mysql-server 

было достаточно, чтобы исправить это, хотя он жаловался на старую базу данных spotweb. Я исправил это, удалив spotweb:

sudo apt-get purge spotweb

и перенастроить mysql:

sudo dpkg-reconfigure mysql-server-5.5

Я добавлю это, если кто-то сталкивается с подобными проблемами. Я пытался все удаления и повторной установки безрезультатно. Ключом к поиску решения было то, что выскочка помещает свои журналы ошибок в эту папку

/ вар / Журнал / выскочка /

для MySQL

/var/log/upstart/mysql.log

когда я открыл это было это сообщение

Ошибка синтаксического анализатора AppArmor для /etc/apparmor.d/usr.sbin.mysqld в /etc/apparmor.d/tunables/global в строке 15: не удалось открыть "tunables / home"

Когда я заглянул в папку /etc/apparmor.d/tunables/, мне не хватало домашнего файла, поэтому я создал его

gedit /etc/apparmor.d/tunables/home и скопировал содержимое с другого компьютера, на котором были эти строки без комментариев

@ {HOME}= @ {HOMEDIRS} / * / / root /

@ {}= домашние каталоги / дома /

кто-то сталкивается с подобной проблемой здесь

https://bugs.launchpad.net/ubuntu/+source/mysql-5.5/+bug/982303

после этого я смог перезапустить сервис

В моем случае это было намного проще, чем некоторые ответы здесь. Я нашел связанную ошибку на панели запуска, и исправление было таким, как упомянуто там в комментарии 9:

sudo touch /etc/apparmor.d/local/usr.sbin.mysqld
sudo service apparmor restart

У меня были похожие проблемы, но меня быстро отследили до аппармора, который, как я помню, ранее давал мне эту проблему.

Если вы вносите изменения в эти настройки и ваша система использует apparmor, вам также может потребоваться настроить /etc/apparmor.d/usr.sbin.mysqld. Например. эти строки были добавлены (чтобы разрешить символическую ссылку на my.cnf и чтобы можно было прочитать символический файл, предположительно):

/ usr / sbin / mysqld {... /etc/mysql/*.cnf lr, /path/to/symlinked/my.cnf r,...}

В моем случае я пытался установить MySQL на новую версию Ubuntu 12.04, но я не понимал, почему он выдал ошибку при установке пароля для пользователя root. Я перепробовал все решения выше, но ничего не поделать.

Затем я решил очистить / удалить все, я удалил сервер MySQL и удалил все его папки (/etc/mysql/ и /var/lib/mysql/), в конечном итоге благодаря некоторой случайности, которая не выдает никакой ошибки во время переустановка, и я смог установить пароль и запустить экземпляр сервера.

После обновления я обнаружил, что mysql-server / mysql-server-5.5 не был установлен и ни 5.1. Я переименовал my.cnf в my.cnf_old и попытался установить mysql-serven. Во время установки появилось сообщение об ошибке, что пароль root не может быть установлен. После этого я проверил свои конфиги, apparmor и так далее. Казалось, все в порядке. Моя следующая попытка была перенастроить MySQL-сервер, но он жаловался, что пакет не был установлен полностью. Поэтому я решил удалить и во время этого apt-get исправить пакет, и теперь он работает. Я не знаю почему, потому что я ничего не изменил.

В терминале вы можете установить его снова и запустить my.cnf, набрав:

sudo apt-get install mysql-server-5.1
sudo apt-get --reconfigure mysql-server-5.1
sudo apt-get update
sudo start mysql my.cnf

это может работать таким образом.

У меня проблемы с добавлением performance_schema под [mysqld] в /etc/mysql/my.conf вызывает эту неудачу. Удалил эту строку, и MySQL смог начать снова.

Редактировать: Оказывается, одного гигабайта оперативной памяти недостаточно для запуска mysqld с включенной performance_schema. Я столкнулся с 3 концертами, и все работало нормально.

Другие вопросы по тегам