cannot find mysql.frm_Can't find file: './mysql/plugin.frm' (errno: 13) [ERROR] Can't open the mysql...

事实证明,Ubuntu下迁移mysql目录到数据盘,并不像centos、redhat那样简单便捷,Ubuntu下迁移完后,要更改的文件还是很重要、关键的。

Centos类下建议:http://tengteng412.blog.51cto.com/4751263/1887571参考此篇博文。

Ubuntu类下如下:

大概需要4个步骤,

其中第1步通过root@iZ922xt10vZ:~#service mysql stop

停止数据库,

第4步通过root@iZ922xt10vZ:~#service mysql start

启动数据库。

第2步移动数据文件,不知道是否为Ubuntu智能的原因,移动数据库的时候,除了数据文件,连权限也一起带过去了

1):root@iZ922xt10vZ:~#mv /var/lib/mysql /data/var/lib/

2):root@iZ922xt10vZ:~# cp -ar /var/lib/mysql/ /data/var/lib/

上面两种文件移动方式都是一样能够保证权限保持不变的方式的。

我还在记录/var/lib/mysql各目录的权限,当mv完成之后,/home/下面的权限保留原来/var/lib/mysql的各类权限,其中有目录,文件等等,连chown,chmod都给省事了。

本想这样就没事了,执行第4步一直启动不了,看日志文件root@iZ922xt10vZ:~#tail -f /var/log/mysql/error.log

的结果是:/usr/sbin/mysqld: Can't find file: './mysql/plugin.frm' (errno: 13)100803

12:36:36 [ERROR] Can't open the mysql.plugin table.

Please run mysql_upgrade to create it.100803 12:36:36

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 ./ibdata1InnoDB: File operation call: 'open'.

InnoDB: Cannot continue operation.

刚才mv过去的权限都是对的,不存在还有什么权限的问题,到网上搜索大部分都是redhat系列的系统,其中的SElinux对ubuntu不适用,还差点真用chcon来修改所谓的安全之类的权限了

其实,在my.cnf中注释部分说明的很清楚# * IMPORTANT# If you make changes to these settings and your system uses apparmor,

# * you may# also need to also adjust /etc/apparmor.d/usr.sbin.mysqld.

按照说明进行第3步,注释掉原来的路径,增加新的路径,2行都要修改root@iZ922xt10vZ:~# vim /etc/apparmor.d/usr.sbin.mysqld

/etc/mysql/*.cnf r,

/usr/lib/mysql/plugin/ r,

/usr/lib/mysql/plugin/*.so* mr,

/usr/sbin/mysqld mr,

/usr/share/mysql/** r,

/var/log/mysql.log rw,

/var/log/mysql.err rw,

#/var/lib/mysql/ r,  ### 修改这里如下一行####

/data/var/lib/mysql/ r,### 其实这里只是改成mv以后的相应目录而已

#/var/lib/mysql/** rwk,  ### 修改这里如下一行####

/data/var/lib/mysql/** rwk,### 其实这里只是改成mv以后的相应目录而已

/var/log/mysql/ r,

/var/log/mysql/* rw,

/var/run/mysqld/mysqld.pid rw,

/var/run/mysqld/mysqld.sock w,

/run/mysqld/mysqld.pid rw,

/run/mysqld/mysqld.sock w,

/sys/devices/system/cpu/ r,

完事后,重新加载root@iZ922xt10vZ:~# /etc/init.d/apparmor reload

* Reloading AppArmor profiles Skipping profile in /etc/apparmor.d/disable: usr.bin.firefox [ OK ]

修改完成后执行第4步root@iZ922xt10vZ:~# service mysql start

可以在日志中看见启动成功161229 20:31:49 [Note] Event Scheduler: Loaded 2 events

161229 20:31:49 [Note] /usr/sbin/mysqld: ready for connections.

Version: '5.5.49-0ubuntu0.14.04.1'  socket: '/var/run/mysqld/mysqld.sock'  port: 3306  (Ubuntu)

161229 20:31:49 [Note] Event Scheduler: scheduler thread started with id 1

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值