linux – 重定位数据后,mysql无法启动
我有一个web服务器,默认安装
mysql将其所有数据库文件放在/ var / lib / mysql中.安装/ var的分区只有2GB的空间,所以在运行空间问题后,我决定重新定位mysql的数据目录.
我天真的方法是将/ var / lib / mysql目录完全复制到/ web / dbs / mysql,并更改/etc/mysql/my.cnf以便它读取 datadir = /web/dbs/mysql 但是,重新启动后,我在mysql错误日志中收到以下错误,服务器将无法启动. 130130 9:59:23 [Note] Plugin 'FEDERATED' is disabled. /usr/sbin/mysqld: Can't find file: './mysql/plugin.frm' (errno: 13) 130130 9:59:23 [ERROR] Can't open the mysql.plugin table. Please run mysql_upgrade to create it. 130130 9:59:23 InnoDB: Initializing buffer pool,size = 8.0M 130130 9:59:23 InnoDB: Completed initialization of buffer pool 130130 9:59:23 InnoDB: Operating system error number 13 in a file operation. InnoDB: The error means mysqld does not have the access rights to InnoDB: the directory. InnoDB: File name ./ibdata1 InnoDB: File operation call: 'open'. InnoDB: Cannot continue operation. 所有文件和目录都属于mysql:mysql.为了测试,我甚至改变了/ web / dbs / mysql的访问权限,现在是rwxrwxrwx. 是的,/ web / dbs / mysql / mysql / plugin.frm确实存在. 这可能是什么问题?我错过了什么吗?是否有更详细的输出日志? 更新: >我关闭服务器停止mysql 特权: drwxr-xr-x 4 mysql mysql 34 2013-01-30 15:55 /web/dbs drwx------ 19 mysql mysql 4096 2013-01-30 15:44 /web/dbs/mysql drwx------ 2 mysql mysql 4096 2012-10-11 11:25 /web/dbs/mysql/mysql -rw-rw---- 1 mysql mysql 8586 2012-08-14 19:15 /web/dbs/mysql/mysql/plugin.frm 当我将datadir重置为datadir = / var / lib / mysql时,服务器启动没有问题. 试过以下内容: root:/# su - mysql mysql:~$/usr/sbin/mysqld --verbose 130130 16:01:05 [Warning] Can't create test file /web/dbs/mysql/s15800994.lower-test 130130 16:01:05 [Warning] Can't create test file /web/dbs/mysql/s15800994.lower-test mysql:~$touch /web/dbs/mysql/s15800994.lower-test mysql:~$ls -l /web/dbs/mysql/s15800994.lower-test -rw-r--r-- 1 mysql mysql 0 2013-01-30 16:01 /web/dbs/mysql/s15800994.lower-test 所以数据目录设置为correclty. mysql用户具有写访问权限,但mysql进程无法创建文件. 可能有什么不对? 解决方法
我们在评论中添加了解决方案作为完整性的完整答案……
使用su / sudo进行测试表明,虽然mysqld抱怨权限错误,但mysql用户确实可以成功写入该文件夹,明确表示这不是文件系统权限问题. (如遇到类似问题,这是有用的第一步) Linux的一些发行版(如果不是全部?)现在附带AppArmor,它限制了允许可执行文件访问的文件/文件夹. 这种情况下的解决方案是简单地将新路径添加到/etc/apparmor.d/usr.sbin.mysqld策略文件中. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |