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

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.

ADVERTISEMENTS

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

[donotprint]
Tutorial details
Difficulty Easy (rss)
Root privileges Yes
Requirements None
Time 1m
[/donotprint]

/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.

🐧 Get the latest tutorials on SysAdmin, Linux/Unix, Open Source/DevOps topics:
CategoryList of Unix and Linux commands
File Managementcat
FirewallAlpine Awall CentOS 8 OpenSUSE RHEL 8 Ubuntu 16.04 Ubuntu 18.04 Ubuntu 20.04
Network Utilitiesdig host ip nmap
OpenVPNCentOS 7 CentOS 8 Debian 10 Debian 8/9 Ubuntu 18.04 Ubuntu 20.04
Package Managerapk apt
Processes Managementbg chroot cron disown fg jobs killall kill pidof pstree pwdx time
Searchinggrep whereis which
User Informationgroups id lastcomm last lid/libuser-lid logname members users whoami who w
WireGuard VPNAlpine CentOS 8 Debian 10 Firewall Ubuntu 20.04

ADVERTISEMENTS
42 comments… add one
  • khmer Aug 30, 2008 @ 2:31

    Oh, dear. Thank you so much. You have save the day. I had this problem and found your site on Google and it works!!! thank you so much

  • Amit Shah Oct 31, 2008 @ 13:49

    Thank a lot for posting answer. I had this problem and found your site on Google and its solve my problem!!!

  • JosK Nov 7, 2008 @ 14:00

    THX!

  • EF Nov 15, 2008 @ 22:04

    It’s not solving my problem. It’s still not starting. The same error shows up in the log file :(

  • Geen Nov 26, 2008 @ 1:50

    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?

  • Steve Jan 13, 2009 @ 5:14

    Thanks your a genius works a treat was getting an error when restoring back up now everything fine

  • nowy9 Mar 9, 2009 @ 0:20

    Where should I type the commands to fix the error?

    I use VertrigoSerwer 2.21
    (Appache 2.0.63; PHP 5.2.6; MySQL 5.0.51b PhpMyAdmin 2.11.7)
    This is WAP for Windows XP.

  • duong Jun 3, 2009 @ 15:48

    Thank you for posting the fix. Mine is working after that.
    Best regards.

  • Madhav vyas Jun 24, 2009 @ 9:01

    It still not works. It is not perfect solution.
    Please give me other solution

  • adhitya christiawan nurprasetyo Jul 14, 2009 @ 4:13

    as usual, great article :)

  • jony Aug 20, 2009 @ 11:33

    thank you .. you save my day … i love you full hahaha

  • Fiifi Baidoo Sep 1, 2009 @ 15:42

    Worked like magic, thanks man…

  • stevo Sep 3, 2009 @ 15:29

    u rock. was going nuts!. thanks bruv

  • gara Sep 24, 2009 @ 8:10

    use system-config-securitylevel-tui

    Security Level = Disable
    SELinux = DISABLE

    !!!!

  • Dave Oct 7, 2009 @ 2:22

    Thank you!!! A website that someone built 5 years ago just stopped working today, and I couldn’t figure it out until coming across this solution. You’re a lifesaver!

  • Jonas Nov 4, 2009 @ 14:21

    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?

  • Balachandran Nov 12, 2009 @ 14:51

    Dear ,

    Really It was helpful. Thanks..

    But when i am restarting —– “/etc/init.d/mysqld start” instead of mysqld i put mysql then its started.

    Any way thanks.

    Regards,
    bala

  • Jonas Nov 13, 2009 @ 7:29

    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

  • philippe Jan 16, 2010 @ 20:05

    Thank you,
    This worked for me too.

  • Carlos Mar 5, 2010 @ 21:31

    Thank you, this was driving me crazy

  • Amol Dec 21, 2010 @ 9:51

    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

  • Nikhil Jan 19, 2011 @ 8:13

    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.

  • Sys-halt Mar 28, 2011 @ 8:57

    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

  • David Aug 21, 2011 @ 19:07

    You made my day.

  • yogesh Aug 23, 2011 @ 8:03

    BRAVO…. spend lots of time on it….. :( but u made it come true in just few sec..

    thanks a lot.. cheerssssssss :D

  • Streaming film Dec 9, 2011 @ 1:16

    Thanks!
    I was editing the tmp file to resize it and is appeard this message.
    I solved it with your help, you are great!
    Sorry for my bad english,
    Bye!

  • Dom May 24, 2012 @ 1:26

    Thanks for this. Tried installing on a fresh install of fedora and kept getting this error. You saved me lots of time.

  • Ivan Carrasco Quiroz May 30, 2012 @ 0:35

    Thanks my friend, I was stuck for a while!
    :-)

  • Navid Oct 1, 2012 @ 10:20

    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,

  • AJ Oct 25, 2012 @ 21:38

    Thanks – saved a lot of trouble !

  • Navid Oct 29, 2012 @ 17:36

    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.

  • xianzong.huang May 30, 2013 @ 13:55

    Thank you very much, you saved me.

  • Doubi Nov 6, 2013 @ 21:57

    Thanks Dude!
    Fix the problem.

  • peter Feb 4, 2014 @ 11:56

    Thanks alot. I was able to fix the problem.

  • sp0tz Feb 5, 2014 @ 18:07

    this worked. fixed my problems with mysql. thanks!

  • Omkar A Feb 11, 2014 @ 11:01

    Thanks man. You saved a hell lot of time for me :)

    Its like any directory you want to access through mysql should be owned by root and permission set as 777.

    Thanks !!

  • Pepe Mar 13, 2014 @ 18:44

    GRACIAS!! thx!!

  • Afe May 14, 2014 @ 14:59

    Thanks.

  • Nakata Jul 28, 2015 @ 18:10

    Thank you
    You saved my day !!!

  • mad max Nov 29, 2015 @ 16:51

    thanks

  • Linux User May 31, 2016 @ 15:07

    In my case it´s working, a big THX for your great hint … :-)

  • Dmitriy Moiseev Nov 9, 2016 @ 10:36

    Thanks a lot!

Leave a Reply

Your email address will not be published.

Use HTML <pre>...</pre>, <code>...</code> and <kbd>...</kbd> for code samples.