我将 mysql 配置的 tmp 目录更改为已挂载磁盘,但service mysql restart
出现以下错误:
Can't create/write to file '/mnt/temp/something' (Errcode: 13)
据我理解,Error Code 13
是指文件权限错误。
但奇怪的是:
临时目录所有者已经是
mysql
,文件权限是1777
drwxrwxrwt 2 mysql mysql 4.0K Nov 14 08:34 temp/
我能够以非 root 用户身份在该位置创建文件。
mnt 上有 600 Gb 的空间,所以这应该不是问题。
我可以
tmp
轻松地在根磁盘上创建目录
/etc/mysql/my.cnf
:
user = mysql
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
port = 3306
basedir = /usr
datadir = /mnt/mysql
tmpdir = /mnt/temp
#tmpdir = /var/tmp
是否不允许在已安装的磁盘上创建 tmp 目录?或者我做错了什么?请帮忙。
答案1
这有点老了,但我刚刚自己解决了一个类似的问题(使用 /mnt/tmp 作为系统临时目录)并且不得不弄清楚为什么 MySQL 无法启动。
您可能遇到了 AppArmor 设置问题,导致 MySQL 无法使用 /mnt 驱动器上的目录。您需要将新的 tmp 路径添加到 MySQL app armor 允许路径列表中。
如果你查看系统日志,你可能会在每次尝试启动 mysql 服务器时看到类似这样的消息:
类型 = 1400 审计(1425343954.203:23):apparmor =“DENIED”操作=“mknod”父级 = 1 配置文件=“/usr/sbin/mysqld”名称=“/mnt/tmp/ibMXP5lg”pid = 16418 comm=“mysqld”requested_mask=“c”denied_mask=“c”fsuid = 106 ouid = 106
在这种情况下,您需要编辑文件:
/etc/apparmor.d/usr.sbin.mysqld
并添加以下行:
/mnt/tmp/ r, /mnt/tmp/** rwk,
添加到文件中。然后只需重新启动 AppArmor:
$ sudo 服务 apparmor 重启