我有我的硬盘分区有两个分区,所以我可以轻松地重新安装 Ubuntu 并尝试不同的版本,而不会丢失我的主目录数据。它是这样设置的:
20GB -> / (root)
180GB -> /home
我做了很多开发工作,所以我的/var/www
文件夹符号链接到/home/valorin/workspace
.
但我也想对我的 MySQL 数据文件执行此操作,因为每次重新安装我的机器时我都需要执行完整的 SQLdump,然后在我可以做更多工作之前恢复所有数据库,这让我很恼火。
在不破坏 MySQL 的情况下,最好的方法是什么?
好吧,实际上这个问题有一个潜在的 Ubuntu 特定答案。
正如 Gergoes 链接所提到的,这基本上是关于修改/etc/mysql/my.cnf并在[mysqld]部分中为datadir =设置一个新值。到目前为止,答案的不确定部分。
假设你正在运行一个有点现代的 Ubuntu 版本,你可能会默认安装AppArmor ,并在强制模式下使用/usr/sbin/mysqld的配置文件。该默认配置文件很可能不会接受您的新数据目录。
让我们假设您的新数据目录将是/home/data/mysql。
如果您打开文件/etc/apparmor.d/usr.sbin.mysqld,您将在规则中找到这两行。
假设我们上面的例子,它们必须被这两行替换或(可能更可取)补充。
在我们可以使用它的新数据目录启动我们的 MySQL 服务器之前,我们还必须显式地重新加载我们的新 apparmor 配置文件。
超级用户有一个很好的分步说明如何解决这个问题
这是关于做同样事情的另一组指令 http://www.ubuntugeek.com/how-to-change-the-mysql-data-default-directory.html
在这里重新发布。如果你可以在超级用户上投票,那就去投票吧。
在对权限进行了一些普遍的混淆之后,我意识到问题不在于我没有正确的权限和路径,而是 AppArmor 阻止了 mysql 读取和写入新位置。
这是我的解决方案:
首先停止 MySQL,这样在您摆弄时不会发生任何奇怪的事情:
然后将所有数据库目录移动到他们的新家:
不要移动文件,它们将由 mysql 生成,只需移动文件夹(即数据库)。
然后礼貌地请求 AppArmor 允许 mysql 使用新文件夹:
添加行:
然后告诉 mysql 数据目录已经移动:
换行:
至:
注意:根据您的数据库设置,您可能还需要更改 innodb-data-home-dir 等。
然后重新启动 AppArmor 以读取新设置:
并使用新的 datadir 再次启动 MySQL:
希望这可以帮助!
这真的不是 Ubuntu 特定的。不过,这可能会有所帮助:http: //developer.spikesource.com/wiki/index.php/How_to_change_the_mysql_database_location
对于像我一样使用 VirtualBox 并需要将 MySQL 数据目录移动到主机系统上的共享文件夹的人,请按照http://vacilando.org/en/article/moving-mysql-data-files-virtualbox上的简单教程进行操作-共享文件夹
这不会像那样工作。
用户 mysql 必须有权写入新目录: