一次mysql储存地址修改
关闭mysql服务
service mysql stop
创建新文件夹并且赋予mysql用户
mkdir /mysql_data
chown mysql:mysql /mysql_data
拷贝旧地址到新地址
cp -a /var/lib/mysql /mysql_data
找到并且修改mysql配置文件
关键词datadir,socket
datadir=/mysql_data/mysql
socket=/mysql_data_mysql/mysql.sock
这里socket可改可不改,若需要删除旧地址数据则需要改
启动mysql服务
service mysql start
————————————————————————
这里启动失败遇到一个报错
Job for mariadb.service failed because the control process exited with error code.
See "systemctl status mariadb.service" and "journalctl -xe" for details.
使用systemctl status mariadb.service和journalctl -xe分别查看日志后发现,报错位置不一定会高亮,需要自己仔细查看
Can't create test file
这里涉及底层知识,mysql在每次启动时都会自行创建一个test数据库以用于检测服务运行正常
这里无法创建,属于没有权限问题
检查文件所属和文件递归权限发现没有问题都使用了最暴力的chmod -R 777 来赋予权限
查找很多文案后发现
mariadb.service 在启动的时候有很多保护机制【个人习惯用mariadb,比mysql强大一些】
其中的一条保护机制
ProtectHome=true
lib/systemd/system/mariadb.service
需要修改为false,因为这次是将数据库搬迁到home目录下边,这里的保护机制阻止了MySQL在home下边创建目录的行为
修改为false之后,重载systemctl的配置
systemctl daemon-reload
之后再 开启 mysql 服务即可