(sudo su
切换root用户)
1、查看当前数据库存储路径
mysql -uroot -p
mysql> show variables like 'datadir';
+---------------+-----------------+
| Variable_name | Value |
+---------------+-----------------+
| datadir | /var/lib/mysql/ |
+---------------+-----------------+
1 row in set (0.01 sec)
2、创建新的存储路径,并将MySQL的数据复制到新的目录中
cd /data/mysql
mkdir /mysqldb
cp -ar /var/lib/mysql /data/mysql/mysqldb
#(复制后数据存储路径实际为mysqldb下的mysql文件夹)
chown -R mysql:mysql /data/mysql/mysqldb/mysql
3、停止mysql服务
service mysql stop
4、修改MySQL的配置文件
vim /etc/mysql/mysql.conf.d/mysqld.cnf
修改datadir为新的mysql存储路径:
datadir = /data/mysql/mysqldb/mysql
5、修改安全保护文件
vim /etc/apparmor.d/usr.sbin.mysqld
修改# data dir access下的文件路径:
#Allow data dir access
/data/mysql/mysqldb/mysql/ r,
/data/mysql/mysqldb/mysql/** rwk,
6、修改mysql访问控制文件
vim /etc/apparmor.d/abstractions/mysql
将
/var/lib/mysql{,d}/mysql{,d}.sock rw,
改成
/data/mysql/mysqldb/mysql{,d}/mysql{,d}.sock rw,
最初跳过这一步报错:
cat /var/log/mysql/error.log
查看错误日志,发现是权限错误(目前还不确定是chmod还是/etc/apparmor.d/abstractions/mysql导致的):
使用:
chmod -R 777 /data
chown -R mysql /data/mysql/mysqldb/mysql
(这一步其实已经配置了,不知道之前是否生效)
修改文件权限,并修改/etc/apparmor.d/abstractions/mysql后,重启服务。
7、重启服务
service apparmor reload
service apparmor restart #(/etc/init.d/apparmor start)
service mysql restart
不报错即可。
8、查看是否启动成功
ps -ef | grep mysql
9、登录
mysql -uroot -p
登录成功。
参考资料:
https://www.cnblogs.com/conpi/p/16631512.html
https://www.cnblogs.com/xiaojikuaipao/p/16284172.html
http://t.csdn.cn/ZQC6D
https://www.jianshu.com/p/2310d1e56588
https://blog.csdn.net/qq_34340582/article/details/129054811