本来呢,这是一挺简单的活。停止数据库。把数据库文件移动到你指定的位置,设置好目录权限。修改my.cnf文件。主要是修改datadir的参数。基本上就OK了。
但是,Ubuntu下偏偏多了一个Apparmor的工具,据说是作为SELinux的一种替代方案。最开始我还不知道有这玩意儿存在。按照原来在RHEL上迁移默认数据库路径的方法在Ubuntu上做了以便。启动数据库的时候,无论你怎么设置目录的权限,属主和属组,都是会error -13的错误。就是说权限不够。但是我切换到mysql帐号下,mkdir,touch都很正常呀了。Google了半天,其中有人提到了Apparmor这东西。果然在/etc/apparmor.d/目录下看到usr.sbin.mysqld的配置文件,里面记录了mysqld可以对哪些路径进行操作的定义。按照规则修改,重启Apparmor服务。再重启mysql服务就正常了。
这里记录下我的搬迁过程,无过程无真相:
1)设置你的位置,我这里设定在/home/websites/database下面。数据文件放在/home/websites/database/mysql目录下,pid文件,错误日志放在/home/websites/database/var目录下。
cp -a /var/lib/mysql /home/websites/database
至于/var/run/mysqld这些就不要了。
2)设置权限,其中/home/websites/database这些只要有rx权限。/home/websites/database/mysql目录属主和属组都是mysql.而/home/websites/database/var 目录属主是mysql,组是root。
3)修改/etc/apparmor.d/usr.sbin.mysqld根据上面的描述,文件修改成下面这个样子:
12 |
capability dac_override, |
13 |
capability sys_resource, |
24 |
/etc/mysql/conf.d/* r, |
27 |
/usr/share/mysql/** r, |
28 |
/home/websites/database/var/mysqld_error.log rw, |
29 |
/home/websites/database/mysql/ r, |
30 |
/home/websites/database/mysql/** rwk, |
31 |
/home/websites/var/ r, |
32 |
/home/websites/var/* rw, |
33 |
/home/websites/var/mysqld.pid w, |
34 |
/home/websites/var/mysqld.sock w, |
36 |
</ABSTRACTIONS></TUNABLES> |
4)重启Apparmor服务,启动MySQL服务。查看/home/webistes/database/var目录下的mysqld_error.log文件,看看有什么报错没有,看看该目录下有没有mysql.sock和mysqld.pid,如果有的话,表示成功了。如果有包权限的问题。你可以su到mysql帐号,尝试在/home/websites/database/mysql目录下建立文件,创建目录看看。
建议继续学习:
- Ubuntu 下Hash校验和不符问题的解决 (阅读:4491)
- ubuntu10.10 使用mrtg监控服务器的cpu、内存、网络等等情况 (阅读:3726)
- 记一下我的ubuntu升级到10.04时遇到都问题 (阅读:3707)
- Ubuntu中apt-get列出的软件包前面的字母标识含义 (阅读:3430)
- Ubuntu上激活ATI/AMD专有的FGLRX驱动进不了图形界面的解决办法 (阅读:3320)
- Windows、RedHat、CentOS和Ubuntu操作系统生命周期 (阅读:3083)
- 解决 Ubuntu 登录时用户名中不能含有“@”的问题 (阅读:2748)
- 解决 ubuntu ssh 慢的问题 (阅读:2687)
- ubuntu 9.10快速安装nginx+php环境手记 (阅读:2643)
- 解决Ubuntu播放器快进问题 (阅读:2437)
QQ技术交流群:445447336,欢迎加入!
扫一扫订阅我的微信号:IT技术博客大学习