3

I ordered a new server that came with mariaDB 10.0 installed. I edited /etc/my.cnf to change the tmpdir to /home/mysql_tmp_dir (owned by mysql:mysql). All worked fine.

Did upgrade to mariaDB 10.1.37 and the tmpdir can no longer be written to:

[ERROR] mysqld: Can't create/write to file '/home/mysql_tmp_dir/ibV9SvJP' (Errcode: 13 "Permission denied")

This of course caused all kinds of problems, mainly that innodb engine was unable to load.

Commenting tmpdir out to revert to the default and restarting temporarily resolved the issue. But, I am at a loss as to why this happened and how to resolve it.

I need a larger tmpdir, otherwise it fills up when optimizing large databases, which of course causes mysql to lock up until space is freed.

  • 1
    Get your admin to place more temporary space in a proper place in the filesystem. /home is not a proper place for temp files, and many other things will not be able to write here either. – Michael Hampton Jan 28 at 4:03
  • Don't use OPTIMIZE TABLE; it is almost of no use. – Rick James Jan 30 at 2:04
  • This probably belongs in dba.stackexchange.com . – Rick James Jan 30 at 2:08
1

In earlier 10.1 release MariaDB added some systemd hardening, one of those was the setting to protect the homedir,

Try this

awk '/Protect/' /usr/lib/systemd/system/mariadb.service

If you see ProtectHome=true, you can either move the tmpdir somewhere else, or add

// File: /etc/systemd/system/mariadb.service.d/protecthome.conf
[Service]
ProtectHome=false

Related links

  • Thanks for the info. I will investigate further and try this solution. – vicos Jan 29 at 4:17
  • I tried the ProtectHome=false and still was not able to write to home. – vicos Jan 30 at 4:20
  • Never mind. All is well! I didn't do 'systemctl daemon-reload' before restarting mysql. – vicos Jan 30 at 15:04

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.