注意:这里使用mysql 5.1,Ubuntu 11.10
在机器A的/var/lib/mysql/文件夹下面有数据库smallone的文件。
现在想把smallone下面对应的*.MYD *.frm *.MYI直接迁移到机器B的/var/lib/mysql/smallone下面
1,直接在mysql中查看是否迁移成功
在/etc/init.d文件夹下面运行mysql -u root -p
输入密码。
>show databases;
这时可以看到smallone已经有了
>use smallone;
>show tables;
>select * from yourTblName;
这时可以看到如下错误:
ERROR 1017 (HY000): Can't find file: './smallone/tbledge.frm' (errno: 13)
为了解决这个问题,查了很多资料,后来知道是权限问题
ls -la /var/lib/mysql/smallone
果然是权限问题:
drwx------ 2 mysql mysql 4096 2012-04-04 22:10 .
drwx------ 4 mysql mysql 4096 2012-04-04 22:10 ..
-rw-rw---- 1 mysql mysql 65 2012-04-04 22:07 db.opt
-rw------- 1 root root 8662 2012-04-04 22:09 tbledge.frm
-rw------- 1 root root 58368 2012-04-04 22:07 tbledge.MYI
tbledge.frm是root用户组的东西!mysql用户组访问不了它!
2,修改.frm .MYI权限
了解了问题的出处之后,就动手解决它:
sudo chown mysql /var/lib/mysql/smallone/tbledge.frm
sudo chown mysql /var/lib/mysql/smallone/tbledge.MYI
sudo chgrp mysql /var/lib/mysql/smallone/tbledge.frm
sudo chgrp mysql /var/lib/mysql/smallone/tbledge.MYI
再来查看,说明权限已经改好了:
drwx------ 2 mysql mysql 4096 2012-04-04 22:10 .
drwx------ 4 mysql mysql 4096 2012-04-04 22:36 ..
-rw-rw---- 1 mysql mysql 65 2012-04-04 22:07 db.opt
-rw------- 1 mysql mysql 8662 2012-04-04 22:09 tbledge.frm
-rw------- 1 mysql mysql 58368 2012-04-04 22:07 tbledge.MYI

本文详细介绍了如何在不同机器间迁移MySQL数据库的*.MYD、*.frm和*.MYI文件,并解决了迁移过程中遇到的权限问题。通过更改文件权限,确保MySQL用户组能够访问所需的文件,从而实现数据库的成功迁移。

被折叠的 条评论
为什么被折叠?



