Mysql ERROR 1005 (HY000): Can't create table 'tmp' (errno: 13)
I had the same issue a couple of weeks ago.
The database folder on the filesystem was owned by the wrong user.
A simple chown -R mysql:mysql /var/lib/mysql/database_name
did the trick!
Everything's explained here: http://www.dinosources.eu/2010/10/mysql-cant-create-table (it's italian, but it's pretty clear)
Cheers
Well... in /etc/mysql/my.cnf there's the "tmp" folder for use which is /tmp (from root) as default.. and do not have mysql privileges. chmod 0777 /tmp will do the trick
I had the error above with correct permissions on /tmp, correct context and sufficient disk space on Fedora 16.
After a day of ripping my hair out, I tracked the problem down to a setting in systemd configuration for the MySQL service.
In /etc/systemd/system/multi-user.target.wants/mysqld.service
check for if there is a setting PrivateTmp=true
. This change forces MySQL to use a /tmp/systemd-namespace-XXXXX subdirectory instead of putting files directly into /tmp. Apparently MySQL does not like that and fail with a permission denied error (13) for any query that required the creation of a temp file.
You can override this setting as follows:
cat >> /etc/systemd/system/mysqld.service << END_CONFIG
.include /lib/systemd/system/mysqld.service
[Service]
PrivateTmp=false
END_CONFIG
Then reload configuration by running: systemctl daemon-reload
and restart MySQL.