Linux下迁移 MySQL 8.0 数据存储到指定位置

版权声明:转载请注明地址! https://blog.csdn.net/Shieber/article/details/88544034

Linux下迁移 MySQL 8.0 数据存储到指定位置


Ubuntu18.04 LTS上安装了MySQL 8.0.15,但是默认数据存放位置为/var/lib/mysql,这里空间可能会不够,故寻求迁移数据库存储位置到/home下。思路很简单:停服务迁位置改配置再重启

一:具体步骤

停止mysql服务

  1. sudo service mysql stop

拷贝数据存储到你的新位置

  1. 例如: /home/database/
  2. sudo cp -R /var/lib/mysql /home/database/

打开/etc/mysql/mysql.conf.d/mysqld.cnf修改数据存储位置

  1. 将以下两行注释掉并加入新的两行(按自己的位置修改)
  2. #socket = /var/run/mysqld/mysqld.sock
  3. #datadir= /var/lib/mysql
  4. socket = /home/database/mysql/mysql.sock
  5. datadir = /home/database/mysql
  6. 再接着添加以下内容
  7. [client]
  8. socket = /home/database/mysql/mysql.sock
  9. [mysql]
  10. socket = /home/database/mysql/mysql.sock

打开/etc/apparmor.d/usr.sbin.mysqld修改新位置的读写权限

  1. 注释以下两行并加入新的两行(用gedit修改该文件要记得删除可能存在的usr.sbin.mysqld~ 文件,不然启动会失败)
  2. #/var/lib/mysql/ r,
  3. #/var/lib/mysql/** rwk,
  4. /home/database/mysql/ r,
  5. /home/database/mysql/** rwk,

打开/etc/apparmor.d/abstractions/mysql修改数据库的依赖路径

  1. 注释下面一行并加入第三行(这是个大坑)
  2. #/var/lib/mysql{,d}/mysql{,d}.sock rw,
  3. /home/database/mysql/mysql.sock rw,

重新加载apparmor刷新配置文件

  1. sudo /etc/init.d/apparmor reload

重新加载mysql服务

  1. sudo service mysql start

二:其他几个大坑可能导致启动失败

mysql/的权限属性

  1. 注意查看/home/database/mysql是否属于mysql组和mysql用户,及权限,若不是则执行
  2. sudo chown -R mysql:mysql /home/database/mysql
  3. sudo chmod 755 /home/database/mysql/
  4. 没有mysql组的通过以下命令创建mysql组和用户
  5. sudo groupadd mysql
  6. sudo useradd -r -g mysql mysql

database/的权限属性

  1. database/的权限,建议是755,属于root,root
  2. sudo chgrp root database/
  3. sudo chown root database/
  4. sudo chmod 755 database/

Linux selinux安全机制

  1. 在/etc/selinux/config 或类似的文件里,如有SELINUX项,请修改为
  2. SELINUX=disabled

三:结语

  1. 网上的很多教程都过时且并不详细,提到这个又漏掉那个,本教程仍旧不敢保证你一定能成功。
  2. MySQL 8.0的配置文件太多了,my.cnf conf.d/ mysql.cnf mysql.conf.d/ 等等出现了引用包含。
  3. 官方文档 六千多页,够玩一年。

猜你喜欢

转载自blog.csdn.net/Shieber/article/details/88544034