我最近将我的 MySQL 数据库数据目录从默认位置移动/var/lib/mysql
到了位于的新硬盘上/media/..UID../mysql
,按照您可以在几篇文章中找到的步骤进行操作。
- 停止 MySQL
- 将旧文件夹复制到新位置
- 更改
datadir
的[mysqld]
/etc/mysql/my.cnf
- 更改 AppArmor 配置中的两个条目
- 从数据目录调整用户权限
- 重新启动 AppArmor
- 重启 MySql
完成这些步骤后,我尝试创建一个新数据库,它成功了,它也出现在新文件夹中。然后我创建了一个新的 InnoDB 表,它也成功了,它将文件放入文件夹*frm
中/mysql/new
。但后来我想在这个数据库中创建一个 MyISAM 表,我收到了错误
#1 - Can't create/write to file '/media/..UID../mysql/new/tableName.MYI' (Errcode: 13)
我已经尝试将所有权限设置为 777,因为我认为这是一个权限问题(但由于 InnoDB 可以写入该文件夹,我不明白为什么 MyISAM 不能!?)。对我来说,MyISAM 引擎似乎需要其他地方的特殊权限才能写入其文件,但我不知道在哪里。
起初我以为是新硬盘的安装问题,但后来又发现,InnoDB 可以创建数据库文件夹,也可以在这些文件夹中创建文件。
因此,如果有人在移动 MyISAM 表后遇到类似问题,并且可以提示在哪里查找或尝试其他方法,我们将不胜感激。
提前致谢!
答案1
我遇到了类似的问题。
以下是在 Ubuntu 12.04 上有效的方法
将数据文件从 移动/var/lib/mysql
到/newdir_path/newdir
sudo mysql stop
sudo rsync -av /var/lib/mysql /newdir_path/newdir ## like copy, but keeps rights
sudo -H gedit /etc/mysql/my.cnf
改成datadir
/newdir_path/newdir
sudo -H gedit /etc/apparmor.d/usr.sbin.mysqld
代替:
/var/lib/mysql/ r,
/var/lib/mysql/** /rwk
进入:
/newdir_path/newdir/ r,
/newdir_path/newdir/** rwk,
现在运行:
sudo /etc/init.d/apparmor restart
sudo chown mysql:mysql <b>/newdir_path
sudo start mysql