前提
内容来自于自己编写沙箱一键部署脚本时进行的操作,所有的内容都是自己实际操作可行的形况下写的
我所使用的数据库是Mariadb-10.6.12,使用离线安装包安装的,所以可能跟在线安装的有一部分误差,请以实际情况为准
数据库文件默认路径:/var/lib/mysql
数据库日志默认路径:/var/log/mysql(我所使用的默认是注释掉,未开启,需要自己手动删除注释才可以使用)
数据库配置文件路径:/etc/mysql/mariadb.conf.d/50-server.cnf(文件一般都在/etc/mysql/****.conf.d 下面,根据自己的实际情况查看)
以下所有的内容都是在自己实际操作无误后才写出来的,并且是在非root用户下操作的,如果在root用户下,所有命令不需要加sudo
说明:步骤是按照实施过程中的思路来写的,中间有写了一些直接修改的脚本命令,减少手动修改的次数
完整的脚本代码放在最后,但建议看一下全程的思路
一、Mariadb离线安装
说明:在线安装只要设备可以通外网,使用apt install mariadb就能下载,这里不做阐述
Ubuntu22.04 部分离线安装包资源
二、修改数据库存储路径
1、停用mariadb服务
sudo systemctl stop mariadb
2、拷贝原始数据库数据到要修改的路径
我修改的路径为/data/mysql,故以此为例
sudo cp -r /var/lib/mysql /data/mysql
或者
sudo rsync -avzh /var/lib/mysql /data/mysql
这里拷贝之后会自动创建mysql文件夹,所以无需提前手动创建
3、修改目录的权限
sudo chown -R mysql:mysql /data/mysql
4、设置apparmor
命令行输入
sudo vim /etc/apparmor.d/tunables/alias
在文档最后面加入
alias /var/lib/mysql -> /data/mysql,
保存退出
或者直接使用脚本命令
sudo sed -i '$a\alias /var/lib/mysql -> /data/mysql,' /etc/apparmor.d/tunables/alias
添加完之后重启apparmor服务
sudo systemctl restart apparmor
5、修改默认的数据库datadir路径
使用vim编辑/etc/mysql/mariadb.conf.d/50-server.cnf配置文件下的datadir路径,将原先的路径注释掉,下面添加新的路径
sudo vim /etc/mysql/mariadb.conf.d/50-server.cnf
datadir = /data/mysql ###添加的新路径
或者直接使用一条以下命令即可
sudo sed -i '/datadir/a\datadir = /data/mysql' /etc/mysql/mariadb.conf.d/50-server.cnf
###空格可根据自己调整,我是为了对其才使用这么多空格
6、修改mysql.service和mysqld.service文件
sudo vim /lib/systemd/system/mysql.service
sudo vim /lib/systemd/system/mysqld.service
将ProtectHome修改为False
也可以使用下面的命令直接修改
sudo sed -i 's/ProtectHome=.*/ProtectHome=False/' /lib/systemd/system/mysql.service
sudo sed -i 's/ProtectHome=.*/ProtectHome=False/' /lib/systemd/system/mysqld.service
7、最后重启mariadb服务即可
sudo systemctl start mariadb
###两条命令二选一即可
sudo service mariadb start
8、检查是否修改了mariadb数据库路径
mysql -uroot -p ##使用密码进入数据库,如果刚安装的没有修改密码,直接mysql就能进入,建议修改密码
MariaDB [(none)]> select @@datadir;
修改前:
修改后:
三、修改Mariadb日志文件路径
1、创建相应的log文件目录
sudo mkdir /data/log -p
sudo mkdir /data/log/mysql -p
###-p是为了确保已经创建了不会报错
1、修改Mariadb配置文件
取消50-server.conf关于日志文件的注释(默认注释)
并修改路径
sudo vim /etc/mysql/mariadb.conf.d/50-server.cnf
2、修改目录权限
sudo chown -R mysql:adm /data/log/mysql
3、重启mariadb服务
sudo systemctl start mariadb
四、完成脚本代码
#!/bin/bash
mysql_log=/data/log/mysql ###新的日志存储路径
mysql_modify=/etc/mysql/mariadb.conf.d/50-server.cnf ###Mariadb配置文件路径
sudo mkdir ${mysql_log} -p
###修改数据库存储路径脚本
sudo systemctl stop mariadb
sudo cp -r /var/lib/mysql /data/mysql
sudo chown -R mysql:mysql /data/mysql
sudo sed -i '$a\alias /var/lib/mysql -> /data/mysql,' /etc/apparmor.d/tunables/alias
sudo systemctl restart apparmor ###重启apparmor
sudo sed -i '/datadir/a\datadir = /data/mysql' ${mysql_modify}
sudo sed -i 's/ProtectHome=.*/ProtectHome=False/' /lib/systemd/system/mysql.service
sudo sed -i 's/ProtectHome-.*/ProtectHome=False/' /lib/systemd/system/mysqld.service
###修改Mariadb日志文件存储目录脚本
sudo sed -i "/^#general_log/s/^#//" ${mysql_modify} ###取消注释
sudo sed -i "s#general_log_file.*#general_log_file = ${mysql_log}/mysql.log#" ${mysql_modify} ###修改存储路径
sudo sed -i "/^#log_error/s/^#//" ${mysql_modify} ###取消注释
sudo sed -i "s#log_error.*#log_error = ${mysql_log}/error.log#" ${mysql_modify} ###修改存储路径
sudo chown -R mysql:adm ${mysql_log}
sudo systemctl start mariadb ###重启mariadb