MySQL无法写入临时目录

时间:2014-05-26 10:24:51

标签: 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)

我甚至尝试使用完全写入权限在tmp中使用my.cnf目录,但我仍然会收到该错误

我试过这篇文章

https://stackoverflow.com/a/16178696

但仍然是同样的错误

我应该怎么做

3 个答案:

答案 0 :(得分:4)

请参阅stackoverflow问题编号-2783313,这可能会有所帮助:

最近的Ubuntu Server Editions(例如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目录。我们希望您已经考虑过这一点的安全隐患。

答案 1 :(得分:1)

尝试手动运行此命令:

touch /mysql/ibAlmthH

如果无法创建它,则会出现文件系统问题,例如:只读文件系统, 所以你需要先修复文件系统问题, 还要检查此目录上的可用磁盘空间,可能没有空间。

答案 2 :(得分:0)

更改目录读取,写入和执行权限..

Chmod 777 / directory_path