我尝试了所有方法,但每当我尝试启动 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/