我的主卷是安装在 / 上的 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 &