移动MySQL数据库的datadir后出现MyISAM问题

我最近将我的MySQL数据库数据目录从默认位置/var/lib/mysql到位于/media/..UID../mysql的新硬盘上,按照几个post中的步骤进行操作。

  1. 停止MySQL
  2. 将旧文件夹复制到新位置
  3. 更改datadir[mysqld]中的datadir
  4. 更改AppArmor配置中的两个条目
  5. 从数据目录调整用户权限
  6. 重新启动AppArmor
  7. 重启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表后遇到类似的问题并且可以提供一些提示,或者尝试其他什么,那么任何帮助都会受到赞赏。

非常感谢提前!

我有类似的问题。

这是Ubuntu 12.04的function

将数据文件从/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 /newdir_path sudo start mysql