Ubuntu 中修改 MySQL 数据库存储数据的位置
理论上适用于所有的Ubuntu和MySQL的版本,本教程在Ubuntu 20.04中安装的MySQL 8.0.20上试验成功,其他版本请自行设置,如出现预料之外的问题,本人概不负责。
- 停止MySQL服务
sudo service mysql stop
- 创建新的数据存储目录
创建新的MySQL的存储目录,假设新的存储路径为:/data/mysql
sudo mkdir -p /data/mysql
- 复制MySQL的数据到新的目录中
sudo cp -ar /var/lib/mysql /data/mysql
- 修复新的存储目录的权限
对于MySQL数据库存档数据的目录的所有者和所属组只能是mysql用户
sudo chown -R mysql:mysql /data/mysql
- 修改MySQL的配置文件
sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf
编辑上述文件,在文件中找到datadir
项,=
后面的值即为MySQL的存储路径,修改为新的路径即可。即:
datadir = /data/mysql
注意:只是修改MySQL的配置文件是不行的,因为Ubuntu有访问控制系统apparmor
,所以还需要修改与该访问控制系统相关的文件
- 修改安全保护文件
sudo vi /etc/apparmor.d/usr.sbin.mysqld
查找到以下内容,大致在60行左右:
/var/lib/mysql/ r,
/var/lib/mysql/** rwk,
并将其修改为:
/data/mysql/ r,
/data/mysql/** rwk,
- 修改访问控制文件
sudo vim /etc/apparmor.d/abstractions/mysql
查到到以下内容,大致在12行:
/var/lib/mysql{,d}/mysql{,d}.sock rw
并将其修改为:
/data/mysql{,d}/mysql{,d}.sock rw
- 重启
apparmor
服务
必须重启服务才能对apparmor生效
sudo service apparmor restart
- 重启
MySQL
服务
sudo service mysql start