mysqld 给出 errcode:13 因为它不能创建测试文件

cad*_*eus 6 mysql 11.04

11.04 的全新安装。然后我按照这里的所有说明进行操作:http : //www.howtoforge.com/installing-apache2-with-php5-and-mysql-support-on-ubuntu-11.04-lamp

现在,当我运行 mysqld 时,出现此错误:

makara@rahu:~$ mysqld
111103 13:39:37 [Warning] Can't create test file /var/lib/mysql/rahu.lower-test
111103 13:39:37 [Warning] Can't create test file /var/lib/mysql/rahu.lower-test
mysqld: Can't change dir to '/var/lib/mysql/' (Errcode: 13)
111103 13:39:37 [ERROR] Aborting
111103 13:39:37 [Note] mysqld: Shutdown complete
Run Code Online (Sandbox Code Playgroud)

IRC上有人说可能是包裹问题??

谢谢甜菜

Con*_*ion 6

从 Oneiric 升级到 Precise 后,我遇到了同样的问题,将 MySQL 从 5.1 升级到 5.5。

就我而言,问题是

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

丢失了,即使它包含在

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

默认情况下。一个简单的

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

为我解决了这个问题。

对于那些搜索:保存有趣信息的日志文件是 /var/log/upstart/mysql。/var/log/mysql(*|/*) 中将没有任何内容

您看到的可能包括:

  • sudo service mysql start 结果是

    开始:作业未能启动

  • 手动尝试以mysqld普通用户身份启动会像往常一样失败(在上述问题出现之前),因为用户无权访问 /var/lib/mysql(可以在系统日志中找到)。

  • 以 root 身份启动 mysqld 会成功(我不知道为什么)


Mic*_*l K 5

mysqld 应该作为 mysql 用户运行。您不应手动运行守护程序。最好将其作为这样的服务启动:

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

该错误消息指出 mysql 服务无法访问某些在您的用户环境中不应被允许访问的文件。所以这种行为应该是正确的。但是,您应该检查目录是否存在以及谁拥有它们以及谁有权访问它们(为此使用 ls -la):

ls -la  /var/lib/
ls -la  /var/lib/mysql
Run Code Online (Sandbox Code Playgroud)