技术头条 - 一个快速在微博传播文章的方式     搜索本站
您现在的位置首页 --> 系统运维 --> ubuntu下移动mysql数据库位置

ubuntu下移动mysql数据库位置

浏览:2913次  出处信息

本来呢,这是一挺简单的活。停止数据库。把数据库文件移动到你指定的位置,设置好目录权限。修改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目录下建立文件,创建目录看看。

建议继续学习:

  1. Ubuntu 下Hash校验和不符问题的解决    (阅读:4491)
  2. ubuntu10.10 使用mrtg监控服务器的cpu、内存、网络等等情况    (阅读:3726)
  3. 记一下我的ubuntu升级到10.04时遇到都问题    (阅读:3707)
  4. Ubuntu中apt-get列出的软件包前面的字母标识含义    (阅读:3430)
  5. Ubuntu上激活ATI/AMD专有的FGLRX驱动进不了图形界面的解决办法    (阅读:3320)
  6. Windows、RedHat、CentOS和Ubuntu操作系统生命周期    (阅读:3083)
  7. 解决 Ubuntu 登录时用户名中不能含有“@”的问题    (阅读:2748)
  8. 解决 ubuntu ssh 慢的问题    (阅读:2687)
  9. ubuntu 9.10快速安装nginx+php环境手记    (阅读:2643)
  10. 解决Ubuntu播放器快进问题    (阅读:2437)
QQ技术交流群:445447336,欢迎加入!
扫一扫订阅我的微信号:IT技术博客大学习
© 2009 - 2024 by blogread.cn 微博:@IT技术博客大学习

京ICP备15002552号-1