ubuntu22.04 + mysql8 迁移数据目录
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服务
systemctl stop mysql
3、创建新的存储路径,并将MySQL的数据复制到新的目录中
cd /data/mysql
mkdir /data
cp -ar /var/lib/mysql/* /data/mysql/data
#(复制后数据存储路径实际为mysqldb下的mysql文件夹)
chown -R mysql:mysql /data/mysql/data
4、修改MySQL的配置文件
1. vim /etc/mysql/mysql.conf.d/mysqld.cnf
修改(没有就新增)datadir为新的mysql存储路径:
datadir = /data/mysql/data
5、修改安全保护文件
vim /etc/apparmor.d/usr.sbin.mysqld
修改# data dir access下的文件路径:
#Allow data dir access
/data/mysql/data/ r,
/data/mysql/data/** rwk,
6、修改mysql访问控制文件
vim /etc/apparmor.d/abstractions/mysql
将 /var/lib/mysql{,d}/mysql{,d}.sock rw,
改成 /data/mysql/data{,d}/mysql{,d}.sock rw,
7、文件赋权
chown mysql:mysql -R /data/mysql
chmod -R 777 /data/mysql
8、启动服务
systemctl start mysql
若出错一下错误可尝试执行(原理不知道,反正我执行之后成功了):/etc/init.d/apparmor restart
2023-09-18T06:54:40.110613Z 0 [System] [MY-010910] [Server] /usr/sbin/mysqld: Shutdown complete (mysqld 8.0.34-0ubuntu0.22.04.1) (Ubuntu).
2023-09-18T06:54:40.607925Z 0 [Warning] [MY-010091] [Server] Can't create test file /home/mysql/mysql/mysqld_tmp_file_case_insensitive_test.lower-test
2023-09-18T06:54:40.607972Z 0 [System] [MY-010116] [Server] /usr/sbin/mysqld (mysqld 8.0.34-0ubuntu0.22.04.1) starting as process 70809
2023-09-18T06:54:40.609798Z 0 [Warning] [MY-010091] [Server] Can't create test file /home/mysql/mysql/mysqld_tmp_file_case_insensitive_test.lower-test
2023-09-18T06:54:40.609804Z 0 [Warning] [MY-010159] [Server] Setting lower_case_table_names=2 because file system for /home/mysql/mysql/ is case insensitive
mysqld: File './binlog.index' not found (OS errno 13 - Permission denied)
参考文档链接:https://blog.csdn.net/qq_33187368/article/details/129832763