——废话先不罗嗦了,就让这篇草草完成的博客文章全且当做个记录吧。
以前我使用的是CentOS上的MySQL,后来因为测试需要,需要将网站以及在数据库存储的数据迁移到新的系统中进行测试,目标系统为RedHat Enterprise Linux Server(RHEL)。
由于以前从来没有迁移过数据库,因此马上就遇到了难题。
还有其他问题没有列出,仅仅就权限的问题在下面的命令以及执行结果中展示。
注:部分显示被屏蔽。
- Sun 25 Mar 2012 05:07:30 PM CST
- 在迁移MySQL时出现的错误/usr/bin/mysqlshow: Cannot list tables in ********: Can't read dir of './********/' (errno: 13)
- Google关键词:mysql errno: 13
- 解决方案:MySQL数据库的子数据库必须是mysql用户和mysql组所有,否则mysql无法读取迁移过来的数据库。
- [root@localhost mysql]# ls -al
- total
- drwxr-xr-x. 7 root root 4096 Mar 24 02:44 .
- drwxr-xr-x. 48 root root 4096 Mar 24 02:45 ..
- -rw-r-----. 1 root root 27262976 Mar 24 02:44 ibdata1
- -rw-r-----. 1 root root 5242880 Mar 24 02:44 ib_logfile0
- -rw-r-----. 1 root root 5242880 Mar 24 02:44 ib_logfile1
- drwx------. 2 root root 4096 Mar 24 02:44 ********
- drwx------. 2 root root 4096 Mar 24 02:44 mysql
- drwx------. 2 root root 4096 Mar 24 02:44 performance_schema
- drwx------. 2 root root 4096 Mar 24 02:44 ********
- drwx------. 2 root root 4096 Mar 24 02:44 ********
- [root@localhost mysql]# ls /var/lib/mysql/ -al
- total
- drwxr-xr-x. 5 mysql mysql 4096 Mar 25 16:33 .
- drwxr-xr-x. 54 root root 4096 Mar 24 04:27 ..
- -rw-rw----. 1 mysql mysql 10485760 Mar 25 16:23 ibdata1
- -rw-rw----. 1 mysql mysql 5242880 Mar 25 16:23 ib_logfile0
- -rw-rw----. 1 mysql mysql 5242880 Mar 25 16:23 ib_logfile1
- drwx------. 2 root root 4096 Mar 25 16:33 ********
- drwx------. 2 mysql mysql 4096 Mar 25 16:23 mysql
- srwxrwxrwx. 1 mysql mysql 0 Mar 25 16:23 mysql.sock
- drwx------. 2 root root 4096 Mar 25 16:33 ********
- [root@localhost mysql]# chown -R mysql:mysql ./********/
- [root@localhost mysql]# chown -R mysql:mysql ./********/
- [root@localhost mysql]# service mysqld restart
- Stopping mysqld: [ OK ]
- Starting mysqld: [ OK ]
- [root@localhost mysql]# ls -al
- total
- drwxr-xr-x. 7 root root 4096 Mar 24 02:44 .
- drwxr-xr-x. 48 root root 4096 Mar 24 02:45 ..
- -rw-r-----. 1 root root 27262976 Mar 24 02:44 ibdata1
- -rw-r-----. 1 root root 5242880 Mar 24 02:44 ib_logfile0
- -rw-r-----. 1 root root 5242880 Mar 24 02:44 ib_logfile1
- drwx------. 2 mysql mysql 4096 Mar 24 02:44 ********
- drwx------. 2 root root 4096 Mar 24 02:44 mysql
- drwx------. 2 root root 4096 Mar 24 02:44 performance_schema
- drwx------. 2 root root 4096 Mar 24 02:44 ********
- drwx------. 2 mysql mysql 4096 Mar 24 02:44 ********
- [root@localhost mysql]# cd /var/lib/mysql/
- [root@localhost mysql]# ls -al
- total
- drwxr-xr-x. 5 mysql mysql 4096 Mar 25 17:12 .
- drwxr-xr-x. 54 root root 4096 Mar 24 04:27 ..
- -rw-rw----. 1 mysql mysql 10485760 Mar 25 17:11 ibdata1
- -rw-rw----. 1 mysql mysql 5242880 Mar 25 17:12 ib_logfile0
- -rw-rw----. 1 mysql mysql 5242880 Mar 25 16:23 ib_logfile1
- drwx------. 2 root root 4096 Mar 25 16:33 ********
- drwx------. 2 mysql mysql 4096 Mar 25 16:23 mysql
- srwxrwxrwx. 1 mysql mysql 0 Mar 25 17:12 mysql.sock
- drwx------. 2 root root 4096 Mar 25 16:33 ********
- [root@localhost mysql]# chown -R mysql:mysql ./********/
- [root@localhost mysql]# chown -R mysql:mysql ./********/
- [root@localhost mysql]# ls -al
- total
- drwxr-xr-x. 5 mysql mysql 4096 Mar 25 17:12 .
- drwxr-xr-x. 54 root root 4096 Mar 24 04:27 ..
- -rw-rw----. 1 mysql mysql 10485760 Mar 25 17:11 ibdata1
- -rw-rw----. 1 mysql mysql 5242880 Mar 25 17:12 ib_logfile0
- -rw-rw----. 1 mysql mysql 5242880 Mar 25 16:23 ib_logfile1
- drwx------. 2 mysql mysql 4096 Mar 25 16:33 ********
- drwx------. 2 mysql mysql 4096 Mar 25 16:23 mysql
- srwxrwxrwx. 1 mysql mysql 0 Mar 25 17:12 mysql.sock
- drwx------. 2 mysql mysql 4096 Mar 25 16:33 ********
- [root@localhost mysql]# service mysqld restart
- Stopping mysqld: [ OK ]
- Starting mysqld: [ OK ]
- [root@localhost mysql]#
其实说的白了,就是需要注意权限指派。因为MySQL的数据库必须由mysql创建和拥有。因为一般来说,迁移过来的都是只具有root的权限——664。所以只有使用chown命令了。
附录:
chown的用法:
chown -R 用户名:用户组 目标文件或目录
其中R表示递归执行。
本文转自 urey_pp 51CTO博客,原文链接:http://blog.51cto.com/dgd2010/816797,如需转载请自行联系原作者