mysqld дает код ошибки: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 сказал, что это может быть проблема пакета?

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

2 ответа

Решение

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

sudo service mysql start

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

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

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

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