背景
公司新买一台云服务器,mysql默认安装好了,数据在系统盘 /data/mysql文件夹中,我想把数据盘挂载到/data文件夹,先将/data文件内容备份至/databak。将数据盘挂载至/data文件夹以后,将/databak的内容移回/data(所有操作使用root用户)。
现象
mysql启动成功,进入mysql以后无法看到mysql数据库,给用户授权报错。



其实是因为无法看到mysql.user,导致所有涉及用户的操作都不行。
解决思路
自然是先网上一顿查资料,发现有两个可能:
1.权限问题
2.mysqld文件内要加几行内容(centos在/etc/rc.d/init.d/mysqld,ubuntu好像是在/etc/apparmor.d/usr.sbin.mysqld)
我先看的/etc/rc.d/init.d/mysqld,没找到类似下面这种信息,这就很尴尬了。
/usr/sbin/mysqld {
...
/var/log/mysql/ r,
/var/log/mysql/* rw,
/var/run/mysqld/mysqld.pid w,
/var/run/mysqld/mysqld.sock w,
/data/ r,
/data/* rw,
于是我只能去查看/data/mysql/mysql整个文件夹的权限,发现所有文件都是640的权限(rw-r-----),抱着试一试的心态,把所有文件改成660的权限(rw-rw----),重启mysql,再进mysql,发现mysql数据库出来了。


我只能说很神奇,不过奇怪的是performance_schema明明还是640的权限,为什么也能看见了,不是很懂。
后面查出原因再更新文档吧。