移动MySQL数据库的datadir后出现MyISAM问题
我最近将我的MySQL数据库数据目录从默认位置/var/lib/mysql
到位于/media/..UID../mysql
的新硬盘上,按照几个post中的步骤进行操作。
- 停止MySQL
- 将旧文件夹复制到新位置
- 更改
datadir
的[mysqld]
中的datadir
- 更改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表后遇到类似的问题并且可以提供一些提示,或者尝试其他什么,那么任何帮助都会受到赞赏。
非常感谢提前!
我有类似的问题。
这是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