我在全新的 Fedora 16 服务器上安装了 mysql,但它无法启动。这是日志文件中的行(^G
以及全部):
^G/usr/libexec/mysqld: Can't create/write to file '/tmp/ibNPyIlu' (Errcode: 13)
我看了看/tmp/
,它有看起来很奇怪的权限:
drwxrwxrwt.
为什么是点? chmod 1777
不会改变任何东西。这对错误负责吗?下一步是什么?
答案1
点表示有一个 ACL(访问控制列表)覆盖了通常的 Unix 权限方案。这是我的样子:
$ ls -ld /tmp
drwxrwxrwt. 7 root root 4096 Apr 23 22:36 /tmp
$ getfacl /tmp
getfacl: Removing leading '/' from absolute path names
# file: tmp
# owner: root
# group: root
# flags: --t
user::rwx
group::rwx
other::rwx
检查您的 /tmp 目录。如果不同,请使用 setfacl 进行更正。
答案2
错误13可能是系统错误13,这意味着权限被拒绝。
$ perror 13
OS error code 13: Permission denied
点表示该文件具有 SELinux 上下文。
GNU ls 使用“.”字符来指示具有 SELinux 安全上下文的文件,但没有其他替代访问方法。
具有任何其他备用访问方法组合的文件都标有“+”字符。
您可以通过运行来显示 SELinux 上下文ls -Z
,例如
$ ls -dZ /tmp
drwxrwxrwt. root root system_u:object_r:tmp_t:s0 /tmp
接下来的步骤是:
- 在看
/var/log/messages
- 在看
/var/log/audit/audit.log
- 尝试跑步
ausearch
或sealert
看:
答案3
这是一个错误,从他们更改为使用 ServicesPrivateTmp 来提高安全性时mysqld
开始。systemd
当您执行 时yum update
,mysql
软件包已更新为 mysql-5.5.22-1.fc16 或更高版本,从而纠正了该问题。
答案4
这个问题与权限无关——尽管我很高兴得到上面的答案来满足我的好奇心。相反,我发现我没有跑
yum update
初始 Fedora 安装后。我猜想,在 Fedora 16 最初发布后,该错误已在某个地方得到修复。呃。