mysqld:无法创建/写入文件‘/home/mysqltmp/ibXXX’权限被拒绝

mysqld:无法创建/写入文件‘/home/mysqltmp/ibXXX’权限被拒绝

我的主卷是安装在 / 上的 20GB SSD 磁盘。我在 /home 上安装了 4TB HDD。因此,为了节省空间,我想将 mysql 临时目录设置为 /home/mysqltmp。

但是当我设置此目录时,mysql 不会启动。我收到错误:

mysqld: Can't create/write to file '/home/mysqltmp/ibm7cVN0' (Errcode: 13 "Permission denied")

我检查了权限并且它是正确的:

# ls -ld /home/mysqltmp/
drwxrwxrwx 2 mysql mysql 4096 Apr  4 03:19 /home/mysqltmp/

以 root 身份运行 mysqld,启动没有问题。

服务器:

# lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 16.04.6 LTS
Release:    16.04
Codename:   xenial

注意:更新至 16.04 后出现问题,之前在 14.04 上工作正常

MySQL 详细信息:

# mysql -V
mysql  Ver 15.1 Distrib 10.1.38-MariaDB, for debian-linux-gnu (x86_64) using readline 5.2

答案1

我认为这可能是 UMASK 值。请检查 umask。

要更改默认的 UMASK 值,请按如下方式启动 mysqld_safe:

$ UMASK=384  # = 600 in octal
$ export UMASK
$ mysqld_safe &

默认情况下,MySQL 会创建访问权限值为 0750 的数据库目录。要修改此行为,请设置 UMASK_DIR 变量。如果设置了其值,则会使用 UMASK 和 UMASK_DIR 值的组合创建新目录。例如,要授予组对所有新目录的访问权限,请按如下方式启动 mysqld_safe:

$ UMASK_DIR=504  # = 770 in octal
$ export UMASK_DIR
$ mysqld_safe &

相关内容