mysqld выдает errcode:13, потому что не может создать тестовые файлы

mysqld выдает errcode:13, потому что не может создать тестовые файлы

Новая установка 11.04. Далее я следовал всем инструкциям здесь: http://www.howtoforge.com/installing-apache2-with-php5-and-mysql-support-on-ubuntu-11.04-lamp

Теперь при запуске mysqld я получаю эту ошибку:

makara@rahu:~$ mysqld
111103 13:39:37 [Warning] Can't create test file /var/lib/mysql/rahu.lower-test
111103 13:39:37 [Warning] Can't create test file /var/lib/mysql/rahu.lower-test
mysqld: Can't change dir to '/var/lib/mysql/' (Errcode: 13)
111103 13:39:37 [ERROR] Aborting
111103 13:39:37 [Note] mysqld: Shutdown complete

Кто-то на IRC сказал, что это может быть проблема с пакетом?

Спасибо, свекла

решение1

Я столкнулся с той же проблемой после обновления с Oneiric до Precise, которое обновило MySQL с версии 5.1 до 5.5.

В моем случае проблема была в том, что

/etc/apparmor.d/local/usr.sbin.mysqld

отсутствовал, хотя он был включен из

/etc/apparmor.d/usr.sbin.mysqld

по умолчанию. Простой

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

решило мою проблему.

Для тех, кто ищет: файл журнала, который содержит интересную информацию, это /var/log/upstart/mysql. В /var/log/mysql(*|/*) ничего не будет.

То, что вы увидите, может включать:

  • sudo service mysql startрезультаты в

    начало: Не удалось запустить задание

  • Попытка запуска вручную mysqldот имени обычного пользователя, как правило, не увенчается успехом (до того, как возникнет описанная выше проблема), поскольку у пользователя нет доступа к /var/lib/mysql (это можно узнать из системного журнала).

  • Запуск mysqld от имени root пройдет успешно (не знаю почему)

решение2

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

sudo service mysql start

Сообщение об ошибке указывает на то, что служба mysql не может получить доступ к определенным файлам, к которым ей не должен быть разрешен доступ в вашей пользовательской среде. Поэтому такое поведение должно быть правильным. Однако вам следует проверить, существуют ли каталоги, кто ими владеет и кто имеет к ним доступ (используйте ls -la для этой цели):

ls -la  /var/lib/
ls -la  /var/lib/mysql

Связанный контент