更改MySQL数据文件存放目录位置

本文介绍如何将MySQL的数据文件从默认位置迁移到新硬盘的过程,并解决了因AppArmor配置不当导致的服务启动失败问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

转载地址:http://www.wandaijin.com/archives/23

问题描述:挪动MySQL数据文件存放目录位置后,MySQL服务一直启动不了,查了很多遍权限依然没有解决,网上很多方式都试过了,依然没有用。最后终于发现apparmor这个玩意儿在作怪。改完/etc/apparmor.d/usr.sbin.mysqld文件,MySQL服务顺利启动^_^

实现思路:移动数据目录,更改配置文件

需求:新加了一个硬盘,想把MySQL数据库目录放到新的硬盘里面。

服务器环境:新硬盘挂载点为/var/local,系统是Ubuntu 14.04 LTS,MySQL使用默认命令安装。

1
$ sudo apt-get install mysql-server mysql-client #MySQL安装命令

步骤重现:

  • 停止MySQL服务
1
$ sudo service mysql stop #停止MySQL服务
  • 移动MySQL数据文件存放目录
1
$ sudo mv /var/lib/mysql/ /var/local/ #数据文件默认位置是/var/lib/mysql/
  • 更改MySQL配置文件my.cnf
1
$ sudo vi /etc/mysql/my .cnf #编辑配置文件

datadir         = /var/lib/mysql

datadir         = /var/local/mysql

  • 启动MySQL服务
1
2
$ sudo service mysql start #启动MySQL服务
start: Job failed to start
 重启失败!于是决定去查看日志,一探究竟。
1
$ tail /var/log/mysql/error .log  #编辑查看错误日志

140728 16:29:09 [Warning] Using unique option prefix myisam-recover instead of myisam-recover-options is deprecated and will be removed in a future release. Please use the full name instead.
140728 16:29:09 [Note] Plugin ‘FEDERATED’ is disabled.
^G/usr/sbin/mysqld: Can’t find file: ‘./mysql/plugin.frm’ (errno: 13)
140728 16:29:09 [ERROR] Can’t open the mysql.plugin table. Please run mysql_upgrade to create it.
140728 16:29:09 InnoDB: The InnoDB memory heap is disabled
140728 16:29:09 InnoDB: Mutexes and rw_locks use GCC atomic builtins
140728 16:29:09 InnoDB: Compressed tables use zlib 1.2.8
140728 16:29:09 InnoDB: Using Linux native AIO
140728 16:29:09 InnoDB: Initializing buffer pool, size = ***.0M
140728 16:29:09 InnoDB: Completed initialization of buffer pool
140728 16:29:09 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.

说是权限不够啊,”./mysql/plugin.frm”文件是在的啊,百思不得其姐啊,查看权限后,哥更改文件拥有者。

1
$ sudo chown mysql -R /var/local/mysql/ #更改文件拥有者

接着又重启,依旧抱同样的错。于是又使用各种搜索引擎。终于搜索到一篇神帖http://zhanggang.net/2010/08/03/38170.htm,找到了”/etc/apparmor.d/usr.sbin.mysqld”这个文件,关键就是这个文件了。

1
$ sudo vi  /etc/apparmor .d /usr .sbin.mysqld

/var/lib/mysql/ r,
/var/lib/mysql/** rwk,

/var/local/mysql/ r,
/var/local/mysql/** rwk,

注:AppArmor是一个高效和易于使用的Linux系统安全应用程序,我并没有像神贴一样在my.cnf文件中找到关于/etc/apparmor.d/usr.sbin.mysqld的提示,可能是版本不一样的原因。

  • 启动MySQL服务
1
$ sudo service mysql start #启动MySQL服务,顺利启动^_^
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值