mysql amazon ec2“无法创建测试文件”错误

时间:2012-05-18 08:18:25

标签: mysql amazon-ec2

我在EC2上运行,并希望在另一个EBS上拥有MYSQL的datadir。我在/ data上安装了EBS(ext3),并将my.cnf中的datadir更改为指向该目录。但是,当我尝试启动mysql时,我收到此错误:

120518 03:53:17 mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended
120518 03:53:28 mysqld_safe Starting mysqld daemon with databases from /data/mysql/
120518  3:53:28 [Warning] Can't create test file /data/mysql/ip-10-136-23-225.lower-test
120518  3:53:28 [Warning] Can't create test file /data/mysql/ip-10-136-23-225.lower-test
/usr/libexec/mysqld: Can't change dir to '/data/mysql/' (Errcode: 13)
120518  3:53:28 [ERROR] Aborting

120518  3:53:28 [Note] /usr/libexec/mysqld: Shutdown complete

120518 03:53:28 mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended

有什么想法吗?

3 个答案:

答案 0 :(得分:4)

如果你在像Ubuntu这样的发行版上运行,那么AppArmor可能会阻止mysqld访问不同目录中的文件。如果您检查系统日志文件,则会发现此类错误消息。

解决方案包括:

  1. 禁用AppArmor(不推荐)

  2. 编辑AppArmor规则(复杂)

  3. 使用“mount bind”使MySQL认为您的数据文件在EBS卷上实际结束时位于原始位置。将更改还原为datadir。

  4. 我为亚马逊多年前写了一篇文章,描述了社区最佳实践,正是您要做的事情,包括mount绑定示例的命令:

      

    使用EBS在Amazon EC2上运行MySQL   http://ec2ebs-mysql.notlong.com

    请注意,文章中的AMI ID是旧的。使用现代的Ubuntu AMI,您需要在/ mkfs.xfs和/ etc / fstab中将/ dev / sdh替换为/ dev / xvdh(但不能在ec2工具命令行中替换)。

答案 1 :(得分:0)

将/ data目录的所有者更改为mysqld进程所有者(chown所有者/数据)。或(chmod 777 -R / data)非常不安全。

答案 2 :(得分:0)

如果您正在运行Ubuntu,则可能由于apparmor服务而遇到此错误。绕过这个。要绕过它,您需要执行以下操作:

1)编辑'/etc/apparmor.d/usr.sbin.mysqld'并添加以下行:

/opt/lib/mysql/ r,

/opt/lib/mysql/** rwk,

( assuming your new data directory is in /opt/lib/mysql )

2)重新启动apparmor服务:

sudo service apparmor restart