MySQL数据库迁移注意点


以前我使用的是CentOS上的MySQL,后来因为测试需要,需要将网站以及在数据库存储的数据迁移到新的系统中进行测试,目标系统为RedHat Enterprise Linux Server(RHEL)。

由于以前从来没有迁移过数据库,因此马上就遇到了难题。

还有其他问题没有列出,仅仅就权限的问题在下面的命令以及执行结果中展示。

注:部分显示被屏蔽。

  1. Sun 25 Mar 2012 05:07:30 PM CST  
  2. 在迁移MySQL时出现的错误/usr/bin/mysqlshow: Cannot list tables in ********: Can't read dir of './********/' (errno: 13)  
  3. Google关键词:mysql errno: 13  
  4. 解决方案:MySQL数据库的子数据库必须是mysql用户和mysql组所有,否则mysql无法读取迁移过来的数据库。 
  5. [root@localhost mysql]# ls -al 
  6. total
  7. drwxr-xr-x.  7 root root     4096 Mar 24 02:44 . 
  8. drwxr-xr-x. 48 root root     4096 Mar 24 02:45 .. 
  9. -rw-r-----.  1 root root 27262976 Mar 24 02:44 ibdata1 
  10. -rw-r-----.  1 root root  5242880 Mar 24 02:44 ib_logfile0 
  11. -rw-r-----.  1 root root  5242880 Mar 24 02:44 ib_logfile1 
  12. drwx------.  2 root root     4096 Mar 24 02:44 ********
  13. drwx------.  2 root root     4096 Mar 24 02:44 mysql 
  14. drwx------.  2 root root     4096 Mar 24 02:44 performance_schema 
  15. drwx------.  2 root root     4096 Mar 24 02:44 ********
  16. drwx------.  2 root root     4096 Mar 24 02:44 ********
  17. [root@localhost mysql]# ls /var/lib/mysql/ -al 
  18. total
  19. drwxr-xr-x.  5 mysql mysql     4096 Mar 25 16:33 . 
  20. drwxr-xr-x. 54 root  root      4096 Mar 24 04:27 .. 
  21. -rw-rw----.  1 mysql mysql 10485760 Mar 25 16:23 ibdata1 
  22. -rw-rw----.  1 mysql mysql  5242880 Mar 25 16:23 ib_logfile0 
  23. -rw-rw----.  1 mysql mysql  5242880 Mar 25 16:23 ib_logfile1 
  24. drwx------.  2 root  root      4096 Mar 25 16:33 ********
  25. drwx------.  2 mysql mysql     4096 Mar 25 16:23 mysql 
  26. srwxrwxrwx.  1 mysql mysql        0 Mar 25 16:23 mysql.sock 
  27. drwx------.  2 root  root      4096 Mar 25 16:33 ********
  28. [root@localhost mysql]# chown -R mysql:mysql ./********/
  29. [root@localhost mysql]# chown -R mysql:mysql ./********/ 
  30. [root@localhost mysql]# service mysqld restart 
  31. Stopping mysqld:                                           [  OK  ] 
  32. Starting mysqld:                                           [  OK  ] 
  33. [root@localhost mysql]# ls -al 
  34. total
  35. drwxr-xr-x.  7 root  root      4096 Mar 24 02:44 . 
  36. drwxr-xr-x. 48 root  root      4096 Mar 24 02:45 .. 
  37. -rw-r-----.  1 root  root  27262976 Mar 24 02:44 ibdata1 
  38. -rw-r-----.  1 root  root   5242880 Mar 24 02:44 ib_logfile0 
  39. -rw-r-----.  1 root  root   5242880 Mar 24 02:44 ib_logfile1 
  40. drwx------.  2 mysql mysql     4096 Mar 24 02:44 ********
  41. drwx------.  2 root  root      4096 Mar 24 02:44 mysql 
  42. drwx------.  2 root  root      4096 Mar 24 02:44 performance_schema 
  43. drwx------.  2 root  root      4096 Mar 24 02:44 ********
  44. drwx------.  2 mysql mysql     4096 Mar 24 02:44 ********
  45. [root@localhost mysql]# cd /var/lib/mysql/ 
  46. [root@localhost mysql]# ls -al 
  47. total 
  48. drwxr-xr-x.  5 mysql mysql     4096 Mar 25 17:12 . 
  49. drwxr-xr-x. 54 root  root      4096 Mar 24 04:27 .. 
  50. -rw-rw----.  1 mysql mysql 10485760 Mar 25 17:11 ibdata1 
  51. -rw-rw----.  1 mysql mysql  5242880 Mar 25 17:12 ib_logfile0 
  52. -rw-rw----.  1 mysql mysql  5242880 Mar 25 16:23 ib_logfile1 
  53. drwx------.  2 root  root      4096 Mar 25 16:33 ********
  54. drwx------.  2 mysql mysql     4096 Mar 25 16:23 mysql 
  55. srwxrwxrwx.  1 mysql mysql        0 Mar 25 17:12 mysql.sock 
  56. drwx------.  2 root  root      4096 Mar 25 16:33 ********
  57. [root@localhost mysql]# chown -R mysql:mysql ./********/ 
  58. [root@localhost mysql]# chown -R mysql:mysql ./********/ 
  59. [root@localhost mysql]# ls -al 
  60. total
  61. drwxr-xr-x.  5 mysql mysql     4096 Mar 25 17:12 . 
  62. drwxr-xr-x. 54 root  root      4096 Mar 24 04:27 .. 
  63. -rw-rw----.  1 mysql mysql 10485760 Mar 25 17:11 ibdata1 
  64. -rw-rw----.  1 mysql mysql  5242880 Mar 25 17:12 ib_logfile0 
  65. -rw-rw----.  1 mysql mysql  5242880 Mar 25 16:23 ib_logfile1 
  66. drwx------.  2 mysql mysql     4096 Mar 25 16:33 ********
  67. drwx------.  2 mysql mysql     4096 Mar 25 16:23 mysql 
  68. srwxrwxrwx.  1 mysql mysql        0 Mar 25 17:12 mysql.sock 
  69. drwx------.  2 mysql mysql     4096 Mar 25 16:33 ********
  70. [root@localhost mysql]# service mysqld restart 
  71. Stopping mysqld:                                           [  OK  ] 
  72. Starting mysqld:                                           [  OK  ] 
  73. [root@localhost mysql]#  

其实说的白了,就是需要注意权限指派。因为MySQL的数据库必须由mysql创建和拥有。因为一般来说,迁移过来的都是只具有root的权限——664。所以只有使用chown命令了。

附录:

chown的用法:

chown -R 用户名:用户组 目标文件或目录

其中R表示递归执行。

相关内容