I had the same issue today on my Amazon Red Hat instance. I was able to perform neither mysql decribe (from mysql shell) nor execute mysqldump. To solve this I tried the most obvious solution:
# chown root:root /tmp -v
# chmod 1777 /tmp -v
# /etc/init.d/mysqld restart
But this didn't help. In the /var/log/mysqld.log I still saw:
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.
It came out that it was SELinux which didn't allow MySQL daemon to write to /tmp. Therefore, what I did was to:
# getenforce
Enforcing
To verify if SELinux is running in enforcing mode (you can read more about this here). The fast and quick solution for this was to switch to SELinux permissive mode:
# setenforce 0
# getenforce
Permissive
# /etc/init.d/mysqld restart
The above solved my problem.
Please note that, if you are working on hardened production, you should be very careful when you are switching from enforcing to permissive. please also note that this specific setting will be reset after the reboot.
perror 13
from the command line would tell you what that error number means. Error Code 13 is "Permission Denied" on Linux. – Starshaped