更改mysql的tmp文件夹

Max*_*uza 25 mysql tmp

我们的Mysql查询使用临时表,在进程中创建临时文件.目前文件被写入/ tmp.mysql写入的临时文件夹的路径到底怎么改变?

Cyb*_*m0n 47

你应该编辑你的my.cnf

tmpdir = /whatewer/you/want
Run Code Online (Sandbox Code Playgroud)

然后重新启动mysql

PS不要忘记给/whatewer/you/wantmysql用户写权限


Eli*_*ynn 36

这是一个将mysqld tmpdir从/ tmp移动到/ run/mysqld的示例,它已经存在于Ubuntu 13.04上并且是tmpfs(memory/ram):

sudo vim /etc/mysql/conf.d/local.cnf
Run Code Online (Sandbox Code Playgroud)

加:

[mysqld]
tmpdir = /run/mysqld
Run Code Online (Sandbox Code Playgroud)

然后:

sudo service mysql restart
Run Code Online (Sandbox Code Playgroud)

持续:

SHOW VARIABLES LIKE 'tmpdir';
Run Code Online (Sandbox Code Playgroud)

================================================== ================

如果MySQL重启时出错,您可能启用了AppArmor:

sudo vim /etc/apparmor.d/local/usr.sbin.mysqld
Run Code Online (Sandbox Code Playgroud)

加:

# 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,
Run Code Online (Sandbox Code Playgroud)

然后:

sudo service apparmor reload 
Run Code Online (Sandbox Code Playgroud)

来源: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


Red*_*ter 5

这在文档中得到了解答:

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.

  • 其他答案要好得多,因为它们解释了如何在MySQL配置文件中设置`tmpdir`而不是依赖于环境变量. (7认同)