MySQL 无法写入临时目录

标签 mysql linux ubuntu

我尝试了所有方法,但每当我尝试启动 mysql 时,我都会收到此错误

140526 18:21:36 InnoDB: Using Linux native AIO
^G/usr/sbin/mysqld: Can't create/write to file '/mysql/ibAlmthH' (Errcode: 13)

我什至尝试以完全写入权限更改 my.cnf 中的 tmp 目录,但我仍然遇到该错误

我试过这篇文章

https://stackoverflow.com/a/16178696

还是一样的错误

我该怎么办

最佳答案

引用这个,来自 stackoverflow 问题编号 2783313 可能有帮助:

最新的 Ubuntu 服务器版本(例如 10.04)附带 AppArmor,MySQL 的配置文件可能默认处于强制模式。您可以像这样执行 sudo aa-status 来检查这一点:

# sudo aa-status
5 profiles are loaded.
5 profiles are in enforce mode.
   /usr/lib/connman/scripts/dhclient-script
   /sbin/dhclient3
   /usr/sbin/tcpdump
   /usr/lib/NetworkManager/nm-dhcp-client.action
   /usr/sbin/mysqld
0 profiles are in complain mode.
1 processes have profiles defined.
1 processes are in enforce mode :
   /usr/sbin/mysqld (1089)
0 processes are in complain mode.

如果 mysqld 包含在强制模式中,那么它可能会拒绝写入。当 AppArmor 阻止写入/访问时,条目也会写入/var/log/messages。您可以做的是编辑 /etc/apparmor.d/usr.sbin.mysqld 并在附近添加 /data//data/*底部像这样:

...
/usr/sbin/mysqld {
    ...
    /var/log/mysql/ r,
    /var/log/mysql/* rw,
    /var/run/mysqld/mysqld.pid w,
    /var/run/mysqld/mysqld.sock w,
    /data/ r,
    /data/* rw,
}

然后让 AppArmor 重新加载配置文件。

# sudo /etc/init.d/apparmor reload

警告:以上更改将允许 MySQL 读取和写入/data 目录。我们希望您已经考虑了这对安全的影响。

关于MySQL 无法写入临时目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23868019/

相关文章:

php - 在 SQL 中组合条件

linux - 对应用程序的使用时间进行时间限制

linux - pam-pgsql 与 sshd

linux - ubuntu终端检查进程是否正在运行

ubuntu - 如何在 Ubuntu 上编译 OpenCL?

Python 的子进程删除 Mysql 列和间距

php - Mysql比较值

c++ - g++ Bash For Windows 和 Ubuntu 的区别

mysql如何从多个中提取数据并求和

r - 在 Linux 中安装 Rserve 包