/usr/libexec/mysqld: Can’t create/write to file ‘/tmp/’ (Errcode: 13)

Posted on in Categories , , , , , last updated February 11, 2014

I‘m using Red Hat Enterprise Linux server version 4.0+ and MySQL version 4.20+. Monit has recently notified me following error:
mysqld’ failed to start.

A detailed log from /var/log/mysqld.log file:

/usr/libexec/mysqld: Can’t create/write to file ‘/tmp/ibCfJwf1’ (Errcode: 13)
070420 10:07:58 InnoDB: Error: unable to create temporary file; errno: 13
070420 10:07:58 [ERROR] Can’t init databases

070420 10:07:58 [ERROR] Aborting

070420 10:07:58 [Note] /usr/libexec/mysqld: Shutdown complete

/etc/init.d/mysql start command returned following output:
Initializing MySQL database: [ OK ]
Timeout error occurred trying to start MySQL Daemon.
Starting MySQL: [FAILED]

How do I fix this problem on Linux or Unix-like systems?

This error means, MySQL server is not able to access your /tmp directory, to write and create temporary files. Make sure /tmp directory is owned by root user and sticky bit is set on /tmp directory. Type the following commands to fix this error. You must be login as root user and type:

# chown root:root /tmp
# chmod 1777 /tmp
## test it ##
# /etc/init.d/mysqld start

Now, your mysql server should start without a problem.

A note about SELinux and AppArmor security policies

If you are using SELinux or AppArmor with customized data directory for database, you need to modify polices to allow MySQL to read and write to the data directory.

Posted by: Vivek Gite

The author is the creator of nixCraft and a seasoned sysadmin and a trainer for the Linux operating system/Unix shell scripting. He has worked with global clients and in various industries, including IT, education, defense and space research, and the nonprofit sector. Follow him on Twitter, Facebook, Google+.

42 comment

  1. Didn’t fix mine either although my error was slightly different:
    081127 2:38:09 [Warning] Can’t create test file /var/lib/mysql/bobby.lower-test
    081127 2:38:09 [Warning] Can’t create test file /var/lib/mysql/bobby.lower-test
    /usr/libexec/mysqld: Can’t change dir to ‘/var/lib/mysql/’ (Errcode: 13)
    081127 2:38:09 [ERROR] Aborting

    WHo can help me with this?

  2. I’m getting an error while starting mysqld in windows xp sp2. The error saying:
    mysqld: Error on delete of ‘C:\Program Files\iBerry Logics\server\MySQL\data\Com 1.lower-test’ (Errcode: 22)

    Can anybody please help me?

  3. Hi,

    The problem was solved and the issue was about the computer name. They named their computer as com1,com2 and com3. MySQL server started to run after i renamed their system.

    Regards

  4. please solve this error,
    I got this error while run the program,
    PHP Fatal error: Uncaught exception ‘Exception’ with message ‘MySQL error:3-Error writing file ‘/tmp/MYpNMlAM’ (Errcode: 28).
    plz help mi,
    i check size used by temp bt it still used only 2% outoff 471M.
    please guide mi properly

  5. Dude,
    Your blog is the best ever seen, i mean you got solutions for each problem i have ever faced in my servers lol.
    This is crazy, i just run back to your blog each time i face any issues.
    Thanks a LOT for this awesome blog.

  6. Thank you Vivek. It was very helpful. It solved my problem, the tmp directory was have no permissions on it due to a security hardening tool my colleagues ran on the server to enforce security on it.

    Thank you again

  7. I have the same problem,
    here is a query I want to execute,

    mysql> select * from remote into outfile ‘/home/nshaikh/mysql_out/outfile.txt’;

    ERROR 1 (HY000): Can’t create/write to file ‘/home/nshaikh/mysql_out/outfile.txt’ (Errcode: 13)

    I have changed the permission of file to ‘777’;
    I tried with ‘root’ and some other user ‘dump’, executing this command in mysql interactive shell,

    please
    reply with your valuable answers.
    Thank you,

  8. Hi,
    I have another user for database say ‘navid’. How can I grant it permission to write to directory as in this case ‘/tmp’ ?

    is ‘/tmp’ is only directory where we can set permissions for db users to write into or other directories can also be made writable?

    thank you.

Leave a Comment