MySQL 5.7 更改数据目录

Posted

技术标签:

【中文标题】MySQL 5.7 更改数据目录【英文标题】:MySQL 5.7 change datadir 【发布时间】:2016-12-08 09:54:20 【问题描述】:

我使用 mysql 5.7 和 CentOS 7.2。

一开始我在my.cnf中的datadir配置是/var/lib/mysql

现在我想更改数据目录。

我尝试了两种方法:

首先,我将/var/lib/mysql 中的所有文件和目录复制到/home/data,然后运行chown -R mysql:mysql /home/data。但是当我运行systemctl start mysqld 时,我收到错误消息:

2016-12-08T16:33:38.206780Z 0 [ERROR] InnoDB: The innodb_system data file 'ibdata1' must be writable
2016-12-08T16:33:38.206806Z 0 [ERROR] InnoDB: The innodb_system data file 'ibdata1' must be writable
2016-12-08T16:33:38.206817Z 0 [ERROR] InnoDB: Plugin initialization aborted with error Generic error
2016-12-08T16:33:38.807398Z 0 [ERROR] Plugin 'InnoDB' init function returned error.
2016-12-08T16:33:38.807421Z 0 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
2016-12-08T16:33:38.807429Z 0 [ERROR] Failed to initialize plugins.
2016-12-08T16:33:38.807436Z 0 [ERROR] Aborting

其次,我将 /var/lib/mysql 移动到 /home 并在 /var/lib 目录中运行 ln -s /home/mysql mysql。当我运行systemctl start mysqld 时,我收到错误消息:

2016-12-08T16:48:28.958136Z 0 [ERROR] InnoDB: Operating system error number 13 in a file operation.
2016-12-08T16:48:28.958165Z 0 [ERROR] InnoDB: The error means mysqld does not have the access rights to the directory.
2016-12-08T16:48:28.958174Z 0 [ERROR] InnoDB: os_file_get_status() failed on './ibdata1'. Can't determine file permissions
2016-12-08T16:48:28.958184Z 0 [ERROR] InnoDB: Plugin initialization aborted with error Generic error
2016-12-08T16:48:29.558751Z 0 [ERROR] Plugin 'InnoDB' init function returned error.
2016-12-08T16:48:29.558792Z 0 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
2016-12-08T16:48:29.558806Z 0 [ERROR] Failed to initialize plugins.
2016-12-08T16:48:29.558817Z 0 [ERROR] Aborting

我该如何处理?

【问题讨论】:

我在 Windows 中遇到了这个问题。一旦我删除了日志文件,服务就会正常启动。 ibdata1 将是日志文件,如果你有备份删除它并尝试再次启动服务 @Rajesh 我曾尝试删除所有ib_logfile。但它不起作用。非常感谢。 @ibear 你能在哪里解决这个问题? 【参考方案1】:

这个问题是关于子目录权限的 你应该编辑这个文件/etc/apparmor.d/local/usr.sbin.mysqld /data/ r, /data/** rwk, 不要忘记,你应该在centos上找到相同的命令,像这样

sudo service apparmor reload

关于这个问题在 ubuntu sys,请看链接

https://askubuntu.com/questions/758898/mysql-wont-start-after-changing-the-datadir-14-04-mysql-5-7/795710#795710

快乐的一天,坏蛋

【讨论】:

以上是关于MySQL 5.7 更改数据目录的主要内容,如果未能解决你的问题,请参考以下文章

记录Mysql 5.7 解压版的安装

无法更改 MySQL 5.7 中的字符集(从拉丁语到 utf8)

Ubuntu18.04 (腾讯云服务器)安装MySQL 5.7,更改MySQL的root密码并使其可远程登录的一种配置方式

Ubuntu18.04 (腾讯云服务器)安装MySQL 5.7,更改MySQL的root密码并使其可远程登录的一种配置方式

Ubuntu18.04 (腾讯云服务器)安装MySQL 5.7,更改MySQL的root密码并使其可远程登录的一种配置方式

数据库mysql5.7 源码安装