我们的MySQL查询使用过程中所产生的临时文件临时表。 目前,该文件被写入到/ tmp。 究竟如何才能临时文件夹的路径到mysql的写入改变?
Answer 1:
你应该编辑的my.cnf
tmpdir = /whatewer/you/want
而重启MySQL后
PS不要忘了写权限授予/whatewer/you/want
为MySQL用户
Answer 2:
下面是mysqld的TMPDIR从移动的/ tmp到已经存在在Ubuntu 13.04和是tmpfs的(存储器/ RAM)/运行/ mysqld的一个例子:
sudo vim /etc/mysql/conf.d/local.cnf
加:
[mysqld]
tmpdir = /run/mysqld
然后:
sudo service mysql restart
持续:
SHOW VARIABLES LIKE 'tmpdir';
================================================== ================
如果你在MySQL重启的错误,你可能启用了AppArmor的:
sudo vim /etc/apparmor.d/local/usr.sbin.mysqld
加:
# Site-specific additions and overrides for usr.sbin.mysqld.
# For more details, please see /etc/apparmor.d/local/README.
/run/mysqld/ r,
/run/mysqld/** rwk,
然后:
sudo service apparmor reload
来源: http://2bits.com/articles/reduce-your-servers-resource-usage-moving-mysql-temporary-directory-ram-disk.html , https://blogs.oracle.com/jsmyth/entry/ apparmor_and_mysql
Answer 3:
这是回答的文档中:
MySQL在哪儿存储临时文件
在Unix,MySQL使用TMPDIR环境变量,在其中存储临时文件的目录的路径名的值。 如果未设置TMPDIR,MySQL使用系统默认的,通常是的/ tmp,/ var / tmp中,或/ usr / tmp目录。
在Windows,Netware和OS2,MySQL的顺序查找TMPDIR,TEMP和TMP环境变量的值。 对于找到的第一个设置,MySQL使用它,不检查那些剩余。 如果没有TMPDIR,TEMP,或TMP的设置,MySQL使用Windows系统默认情况下,通常是C:\ WINDOWS \ TEMP。
Answer 4:
如果你没有的AppArmor或SELinux的问题,但仍然得到错误代码13的:
MySQL必须能够访问的完整路径。 即所有的文件夹必须是mysql的访问,不只是你在指着打算的人。
例如,尝试在你的MySQL配置中使用这样的: tmp = /some/folder/on/disk
# will work, as user root:
mkdir -p /some/folder/on/disk
chown -R mysql:mysql /some
# will not work, also as user root:
mkdir -p /some/folder/on/disk
chown -R mysql:mysql /some/folder/on/disk