尝试在这里设置新服务器但在错误日志中不断出现此信息:
mysqld_safe Starting mysqld daemon with databases from /data/mysql/myisam
[Warning] Can't create test file /data/mysql/myisam/hostname.lower-test
[Warning] Can't create test file /data/mysql/myisam/hostname.lower-test
[Note] Flashcache bypass: disabled
[Note] Flashcache setup error is : setmntent failed
/usr/sbin/mysqld: File '/var/mysql/bin/bin-log.index' not found (Errcode: 13)
[ERROR] Aborting
[Note] /usr/sbin/mysqld: Shutdown complete
mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended
其下的所有内容/data/mysql
(包括 ibdata 和 myisam 文件夹)均归 mysql:mysql 所有,并且具有适当的权限
对于包含 bin 和中继日志的文件夹也是如此/var/mysql
apparmor 已从服务器清除
有任何想法吗?
附言
似乎除了 apparmor 之外还有其他东西影响访问 mysql 文件的权限
在我将数据目录更改为更默认的目录 - /var/lib/mysql 之后,“无法创建测试文件”错误消失了,但是“未找到'/var/mysql/bin/bin-log.index'(错误代码:13)”仍然存在
聚苯硫醚
所以我重新安装了 apparmor 并将所有文件夹添加到 mysqld 的配置文件中,上面提到的错误现在消失了(或者 mysql 现在甚至没有到达那个地步)
我现在拥有的是:/usr/sbin/mysqld:加载共享库时出错:libpthread.so.0:无法打开共享对象文件:没有此文件或目录
用头撞墙。
答案1
这个问题现在有点老了,但万一其他人碰到这个页面(就像我一样),这就是让我开始工作的原因:
就我而言,答案是 apparmor。
解决方法:编辑文件/etc/apparmor.d/usr.sbin.mysqld
添加以下行:
/path/to/new/data/ r,
/path/to/new/data/** rwk,
/path/to/new/logs/ r,
/path/to/new/logs/ rw,
然后重新启动 apparmor:
sudo /etc/init.d/apparmor restart
AppArmor 阻止 mysql 访问这些文件的新位置。这就是为什么所有权限看起来都正确的原因。“某些东西”阻止 mysql 访问新位置是正确的。那个“某些东西”就是“apparmor” :-)
Apparmor 似乎是 Ubuntu 11.10 的标准配置,我就是在这里遇到了这个问题。10.04 似乎没有默认安装 Apparmor。
希望这对某些人有帮助,我已经为这个问题绞尽脑汁好几个小时了!
答案2
如果这是全新安装,您需要运行mysql_install_db
脚本来创建所需的表/文件。
答案3
是全新安装的吗?
bin-log.index
是二进制日志文件名的索引文件。作为临时解决方法,您可以注释掉该log-bin=
行my.cnf
并重试。
如果没有帮助,请尝试使用启动 MySQL mysqld_safe --user=root &
,登录 MySQL 并运行以下命令:
mysql> FLUSH LOGS;
mysql> RESET MASTER;
然后再次启动 MySQL:
sudo killall mysqld_safe
sudo /etc/init.d/mysqld start