实现思路:移动数据目录,更改配置文件
需求:新加了一个硬盘,想把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/mysqldatadir = /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服务,顺利启动^_^
|