Mysql не мог записать в/tmp, затем не удался перезапустить

Я работал orthomcl программа, которая использует mysql. Эта программа воздействовала очень хорошо на тот же компьютер прежде. На этот раз у меня было сообщение об ошибке.

DBD::mysql::st execute failed: Can't create/write to file '/tmp/#sql_700_1.MYI' (Errcode: 13) at /usr/local/bioinf/orthomclSoftware-v2.0.9/bin/orthomclPairs line 709, <F> line 14.

Я пытался перезапустить mysql сервер, сервер, отключенный но отказавший для запуска.

sudo service mysql start
start: Job failed to start

/var/log/mysql/error.log и /var/log/mysql.err пусты. Я попробовал несколько вещей, которые я нашел здесь включая чистку и переустановку mysql-server и удаление ib_logfile* в /var/lib/mysql.

Другая вещь, которую я попробовал,

sudo dpkg-reconfigure mysql-server-5.5

Сообщения об ошибках:

/usr/sbin/mysqld: Can't create/write to file '/tmp/ibNzqwO0' (Errcode: 13)
InnoDB: Error: unable to create temporary file; errno: 13
[ERROR] Plugin 'InnoDB' init function returned error.
[ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
[ERROR] Unknown/unsupported storage engine: InnoDB
[ERROR] Aborting

Вот некоторая информация от dmesg | grep mysql:

[3115187.338273] init: mysql main process (44255) terminated with status 1
[3115187.338417] init: mysql main process ended, respawning
[3115187.356361] init: mysql post-start process (44256) terminated with status 1
[3116827.473256] type=1400 audit(1396394069.224:132): apparmor="DENIED" operation="open" parent=45387 profile="/usr/sbin/mysqld" name="/home/tmp/" pid=45396 comm="mysqld" requested_mask="r" denied_mask="r" fsuid=0 ouid=0
[3116827.582489] type=1400 audit(1396394069.332:133): apparmor="DENIED" operation="mknod" parent=45387 profile="/usr/sbin/mysqld" name="/home/tmp/#sql_b154_0.MYI" pid=45402 comm="mysqld" requested_mask="c" denied_mask="c" fsuid=0 ouid=0
[3116827.908448] type=1400 audit(1396394069.660:134): apparmor="DENIED" operation="mknod" parent=45317 profile="/usr/sbin/mysqld" name="/home/tmp/ibbPfaqP" pid=45415 comm="mysqld" requested_mask="c" denied_mask="c" fsuid=118 ouid=118
[3116841.623608] type=1400 audit(1396394083.372:139): apparmor="STATUS" operation="profile_replace" name="/usr/sbin/mysqld" pid=45443 comm="apparmor_parser"
[3116841.771621] init: mysql pre-start process (45474) terminated with status 1

Были много много строк как это.

Кто-либо мог помочь мне выяснить что случилось с моим сервером MySQL?

Большое спасибо.

11
задан 2 April 2014 в 22:53

2 ответа

Причина этого состоит в том, что Ваш /tmp symlinked к другому местоположению, /home/tmp. Но MySQL бронируется AppArmor, который не позволяет писать свободно в /home/tmp. Для исправления ситуации можно отредактировать /etc/apparmor.d/abstractions/user-tmp и добавить /home/tmp там соответственно; для меня дополнительные строки

  owner /home/tmp/**    rwkl,
  /home/tmp/            rw,

добились цели.

15
ответ дан 16 November 2019 в 14:52

Это кажется, что у Вас нет правильных полномочий на /tmp, который должен быть перезаписываемым миром. Необходимо быть в состоянии зафиксировать его с этой командой:

sudo chmod 1777 /tmp

, Который установит полномочия на 777 (rwx для всех) и также установит липкий бит, который рекомендуется для /tmp dir, Как объяснено в man chmod:

ОГРАНИЧЕННЫЙ ФЛАГ УДАЛЕНИЯ ИЛИ ЛИПКИЙ BIT

ограниченный флаг удаления или липкий бит являются единственным битом, интерпретация которого зависит от типа файла. Для каталогов это препятствует тому, чтобы непривилегированные пользователи удалили или переименовали файл в каталоге, если они не владеют файлом или каталогом; это называют ограниченным флагом удаления для каталога и обычно находят на мировых перезаписываемых каталогах как/tmp. Для регулярных файлов в некоторых более старых системах бит сохраняет текстовое изображение программы на устройстве свопинга, таким образом, это загрузится более быстро, когда выполнено; это называют липким битом.

6
ответ дан 16 November 2019 в 14:52

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

Похожие вопросы: