文章内容

2021/3/20 18:31:15,作 者: 黄兵

MySQL更改tmpdir路径

最近删除一张表,之后出现如下错误:

Incorrect key file for table '/var/tmp/#sql_201e_0.MYI'; try to repair it

出现这个问题的原因是:

MySQL用尽了/tmp空间导致。

解决方案:

更改MySQL tmpdir路径,具体操作步骤如下:

1、修改/etc/mysql/mysql.conf.d/mysqld.cnf的文件,将

tmpdir		= /tmp

改成新的路径:

tmpdir		= /new/tmp/dir

2、之后修改文件权限:

  • 将文件夹的所有者用户和组更改为mysql:# chown mysql:mysql /new/tmp/dir。当仅MySQL服务器将使用该文件夹时,此选项很有用。
  • 使文件夹在世界范围内可读可写:# chmod 1777 /new/tmp/dir。请注意,此命令还会在目录上设置粘性位。这是一种安全措施,它意味着该目录中的文件和文件夹只能由所有者取消链接或删除。当多个进程将路径用作临时目录时,此选项很有用。

如果在将新的tmpdir的正确权限授予mysql用户之后,您仍然收到(Errcode:13)错误,并且新的tmpdir不是标准的临时目录(例如/tmp或/var/tmp),则可能是由AppArmor(自Ubuntu 7.10起默认启用)造成的,它没有赋予MySQL服务器对tmpdir的访问权限。

要解决此问题,必须修改位于/etc/apparmor.d/usr.sbin.mysqld的MySQL安全配置文件。添加行:

/new/tmp/dir rw,
owner /new/tmp/dir/** rwkl,

第一行授予对文件夹的read(r)和write(w)访问权限,第二行赋予对文件内的所有文件和文件夹的read(r),write(w),lock(k)和link(l)访问权限mysql用户拥有的文件夹。

要应用更改,请使用以下命令重新启动AppArmor:

# service apparmor restart


参考资料:

1、How do you fix a MySQL “Incorrect key file” error when you can't repair the table?

2、mysql: Shall I change the mysql tmpdir from /tmp to /var/lib/mysql/tmp

3、Changing the tmp folder of mysql

flex: 1 0 auto; 理解
python 转义
分享到:

发表评论

评论列表