[Ubuntu] 将mysql的数据库转移到ntfs分区下面
我的PHP环境是由apache+php+mysql+phpmyadmin搭建起来的,详情请参考我的另一篇文章:
[Ubuntu] 转载:Ubuntu下安装apache+php+mysql+phpmyadmin
但由于我是使用win7+ubuntu的,虽然基本上开发都在ubuntu下面,但有时也需要在win7下面运行一下网站的,所以我就要把mysql转移到ntfs上面去,但其中遇到了比较麻烦的问题,就是ntfs挂载在ubuntu下面的文件权限都是777的,具体操作过程遇到的问题和解决如下:
1. 修改 /etc/mysql/my.cnf
将
datadir = /var/lib/mysql
改为
datadir = /media/MyDocuments/mysql
尝试重启mysql
sudo /etc/init.d/mysql stop
sudo /etc/init.d/mysql start
结果mysql怎么也重启不来
查看日志,/var/log/mysql/error.log,如下:
100819 15:10:20 [Note] Plugin 'FEDERATED' is disabled.
^G/usr/sbin/mysqld: Can't find file: './mysql/plugin.frm' (errno: 13)
100819 15:10:20 [ERROR] Can't open the mysql.plugin table. Please run mysql_upgrade to create it.
100819 15:10:20 InnoDB: Operating system error number 13 in a file operation.
InnoDB: The error means mysqld does not have the access rights to
InnoDB: the directory.
InnoDB: File name ./ibdata1
InnoDB: File operation call: 'open'.
InnoDB: Cannot continue operation.
^G/usr/sbin/mysqld: Can't find file: './mysql/plugin.frm' (errno: 13)
100819 15:10:20 [ERROR] Can't open the mysql.plugin table. Please run mysql_upgrade to create it.
100819 15:10:20 InnoDB: Operating system error number 13 in a file operation.
InnoDB: The error means mysqld does not have the access rights to
InnoDB: the directory.
InnoDB: File name ./ibdata1
InnoDB: File operation call: 'open'.
InnoDB: Cannot continue operation.
查了很久,基本都是说apparmor的问题,其实这个在my.cnf里面也有提到过了,
# * IMPORTANT
# If you make changes to these settings and your system uses apparmor, you may
# also need to also adjust /etc/apparmor.d/usr.sbin.mysqld.
# If you make changes to these settings and your system uses apparmor, you may
# also need to also adjust /etc/apparmor.d/usr.sbin.mysqld.
ok,这样的话,就明白很多了,修改/etc/apparmor.d/usr.sbin.mysqld即可。
将
/var/lib/mysql/ r,
/var/lib/mysql/** rwk,
/var/lib/mysql/** rwk,
改为
#/var/lib/mysql/ r,
#/var/lib/mysql/** rwk,
/media/MyDocuments/mysql/ r,
/media/MyDocuments/mysql/** rwk,
#/var/lib/mysql/** rwk,
/media/MyDocuments/mysql/ r,
/media/MyDocuments/mysql/** rwk,
再运行一下:/etc/init.d/apparmor reload
重启mysql,搞掂!