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

56

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

    
задан radek 27.04.2012 в 01:06
источник

14 ответов

48

Убедитесь, что пакет 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.

    
ответ дан AWinter 27.04.2012 в 05:47
источник
15
sudo dpkg-reconfigure mysql-server-5.5
    
ответ дан Kevin C. Smith 05.05.2012 в 18:10
12

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

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

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

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

    
ответ дан Corey Aufang 27.04.2012 в 22:58
9

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

sudo mysqld --verbose
    
ответ дан Ian Mackinnon 13.10.2012 в 23:42
6

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

    
ответ дан Eye 03.08.2012 в 04:27
5

Это иногда случается, и хотя есть несколько различных проблем, которые могут заставить 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. % файл co_de% не находится в каталоге по умолчанию. Он должен быть (по умолчанию) расположен в my.cnf или /etc/my.cnf .

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

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

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

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

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

    Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock'

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

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

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

    То же самое касается cat . Если вы видите ошибку, возможно, поставив ее в вопрос или как комментарий поможет быстрее ответить.

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

Если все хорошо, проверьте, работает ли служба mysql типа cat /var/log/mysql.log

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

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

    service mysql status или sudo /etc/init.d/mysql stop

  2. Запустите службу sudo service mysql stop вручную с ручной настройкой

    mysqld

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

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

    sudo mysqld --skip-grant-tables &

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

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

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

    
ответ дан Luis Alvarado 27.04.2012 в 01:17
4

У меня была такая же проблема после обновления до 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
    
ответ дан RedPixel 20.05.2012 в 15:17
4

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

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

для mysql

/var/log/upstart/mysql.log

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

AppArmor parser error for /etc/apparmor.d/usr.sbin.mysqld in /etc/apparmor.d/tunables/global at line 15: Could not open 'tunables/home'

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

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

@{HOME}[email protected]{HOMEDIRS}/*/ /root/

@{HOMEDIRS}=/home/

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

Ссылка

, после чего я смог перезапустить службу

    
ответ дан pt123 22.08.2014 в 13:54
2

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

sudo touch /etc/apparmor.d/local/usr.sbin.mysqld
sudo service apparmor restart
    
ответ дан Manfred Moser 05.06.2012 в 06:38
1

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

ответ дан user54914 27.04.2012 в 12:38
1

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

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

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

ответ дан Simon Nuttall 29.04.2012 в 13:50
1

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

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

    
ответ дан Alexian 10.07.2012 в 10:22
0

В терминале вы можете установить его еще раз и запустили 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

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

    
ответ дан Michael 06.05.2014 в 20:46
0

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

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

    
ответ дан ThorSummoner 09.10.2015 в 00:39