У меня была такая же проблема сегодня на моем экземпляре Amazon Red Hat. Я не смог выполнить ни mysql decribe (из оболочки mysql), ни выполнить mysqldump. Чтобы решить эту проблему, я попробовал наиболее очевидное решение:
# chown root:root /tmp -v
# chmod 1777 /tmp -v
# /etc/init.d/mysqld restart
Но это не помогло. В /var/log/mysqld.log я все еще видел:
141022 10:23:35 InnoDB: Error: unable to create temporary file; errno: 13
141022 10:23:35 [ERROR] Plugin 'InnoDB' init function returned error.
141022 10:23:35 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
Выяснилось, что это был SELinux, который не позволял демону MySQL записывать в / tmp. Поэтому я сделал следующее:
# getenforce
Enforcing
Чтобы проверить, работает ли SELinux в принудительном режиме (вы можете узнать больше об этом здесь ). Быстрое и быстрое решение для этого состояло в том, чтобы переключиться в разрешающий режим SELinux:
# setenforce 0
# getenforce
Permissive
# /etc/init.d/mysqld restart
Вышесказанное решило мою проблему.
Обратите внимание, что если вы работаете над усиленным производством, вы должны быть очень осторожны при переходе от принудительного к принудительному. Также обратите внимание, что этот конкретный параметр будет сброшен после перезагрузки.