ubuntu下移动mysql数据库位置
本来呢,这是一挺简单的活。停止数据库。把数据库文件移动到你指定的位置,设置好目录权限。修改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根据上面的描述,文件修改成下面这个样子:
01 |
# vim:syntax=apparmor |
02 |
# Last Modified: Tue Jun 19 17:37:30 2007 |
03 |
#include <TUNABLES global> |
04 |
|
05 |
/usr/sbin/mysqld { |
06 |
#include <ABSTRACTIONS base> |
07 |
#include </ABSTRACTIONS><ABSTRACTIONS nameservice> |
08 |
#include </ABSTRACTIONS><ABSTRACTIONS user-tmp> |
09 |
#include </ABSTRACTIONS><ABSTRACTIONS mysql> |
10 |
#include </ABSTRACTIONS><ABSTRACTIONS winbind> |
11 |
|
12 |
capability dac_override, |
13 |
capability sys_resource, |
14 |
capability setgid, |
15 |
capability setuid, |
16 |
|
17 |
network tcp, |
18 |
|
19 |
/etc/hosts.allow r, |
20 |
/etc/hosts.deny r, |
21 |
|
22 |
/etc/mysql/*.pem r, |
23 |
/etc/mysql/conf.d/ r, |
24 |
/etc/mysql/conf.d/* r, |
25 |
/etc/mysql/my.cnf r, |
26 |
/usr/sbin/mysqld mr, |
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, |
35 |
} |
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校验和不符问题的解决 (阅读:5161)
- 记一下我的ubuntu升级到10.04时遇到都问题 (阅读:4436)
- ubuntu10.10 使用mrtg监控服务器的cpu、内存、网络等等情况 (阅读:4367)
- Ubuntu中apt-get列出的软件包前面的字母标识含义 (阅读:4137)
- Ubuntu上激活ATI/AMD专有的FGLRX驱动进不了图形界面的解决办法 (阅读:3913)
- Windows、RedHat、CentOS和Ubuntu操作系统生命周期 (阅读:3873)
- 解决 Ubuntu 登录时用户名中不能含有“@”的问题 (阅读:3450)
- 解决 ubuntu ssh 慢的问题 (阅读:3412)
- ubuntu 9.10快速安装nginx+php环境手记 (阅读:3369)
- 解决Ubuntu播放器快进问题 (阅读:3114)
扫一扫订阅我的微信号:IT技术博客大学习
- 作者:mlsx 来源: Linux|系统管理|WEB开发
- 标签: Apparmor datadir ubuntu
- 发布时间:2010-04-14 09:12:27
-
[884] WordPress插件开发 -- 在插件使用 -
[136] 解决 nginx 反向代理网页首尾出现神秘字 -
[57] 整理了一份招PHP高级工程师的面试题 -
[54] Innodb分表太多或者表分区太多,会导致内 -
[54] 如何保证一个程序在单台服务器上只有唯一实例( -
[54] 分享一个JQUERY颜色选择插件 -
[53] jQuery性能优化指南 -
[52] 用 Jquery 模拟 select -
[52] CloudSMS:免费匿名的云短信 -
[51] 全站换域名时利用nginx和javascri
