我正在尝试在另一台服务器上复制MySQL数据库。我停止服务器,tar起mysql目录,将其复制到其他服务器并解压缩。我将所有权限设置为与工作服务器匹配,并复制my.cnf文件,因此除了特定于服务器的更改外,所有内容都相同。
但是,当我尝试启动服务器时,我收到以下InnoDB错误:
InnoDB: Operating system error number 13 in a file operation.
This error means mysql does not have the access rights to
the directory.
File name /var/lib/mysql/ibdata1
File operation call: 'open'.
所有文件的所有者/组是mysql。我甚至尝试将权限更改为+ rw。我可以su到mysql用户并使用head访问ibdata1文件。
SOLUTION:
问题是启用了selinux并阻止了新文件的访问。
答案 0 :(得分:3)
一个愚蠢的问题,但是人们忘了:你说你检查过所有文件都有相同的权限;即使它在消息中这么说,你是否可能忘记检查包含目录的权限?
更新:还有两项建议:
你可以尝试插入--console
和--log-warnings
标志,以获得大量的调试输出,就像这样(在我的Mac上):
/ usr / libexec / mysqld --console --log-warnings --basedir = / usr --datadir = / var / lib / mysql --user = mysql --pid-file = / var / run / mysqld /mysqld.pid --skip-external-locking --socket = / var / lib / mysql / mysql.sock
如果所有其他方法都失败了,您可以尝试strace mysqld ...
查看它究竟是什么失败了。错误将位于底部。
UPDATE2 :有趣的是......我看不到你的操作系统是什么。我通常不使用/sbin/service
,这对我来说有点神秘;在Mac上,它已被弃用,而launchctl
使用/System/Library/LaunchDaemons/mysqld.plist
中的配置文件,而大多数Linux机箱上都有/etc/init.d/mysqld
。所以你可以在那里插入strace。
或(未经测试,但手册页显示可能)您可以尝试支持服务电话:
strace -ff -o straces /sbin/service start mysqld
这应该生成文件straces.pid
,其中一个应该是mysqld的,希望你会在那里找到你的错误。
答案 1 :(得分:0)
这不是您问题的直接答案,但我建议您尝试使用其中一个程序来满足您的备份/恢复需求。
Percona Xtrabackup:https://launchpad.net/percona-xtrabackup Mydumper:http://www.mydumper.org/
两者都是很棒的工具,是免费的开源软件,可以帮助您完全避免这个问题。 希望有所帮助。