改mysql服务器存储位置
基于版本和平台: Ubuntu 1804,Mysql8
首先查看mysql服务器原本储存位置
root@*****-PowerEdge-T630:/data# cd /var/lib/mysql
root@*****-PowerEdge-T630:/var/lib/mysql# ls
auto.cnf binlog.000004 ca.pem '#ib_16384_1.dblwr' ib_logfile1 performance_schema server-key.pem
binlog.000001 binlog.000005 client-cert.pem ib_buffer_pool '#innodb_temp' private_key.pem sys
binlog.000002 binlog.index client-key.pem ibdata1 mysql public_key.pem undo_001
binlog.000003 ca-key.pem '#ib_16384_0.dblwr' ib_logfile0 mysql.ibd server-cert.pem undo_002
- 关闭服务器
$ service mysql stop
- 创建新数据库路径
$ mkdir -p /data/mysql
- 复制mysql原有数据到新目录文件夹,注意修改权限
cp -rp /var/lib/mysql/* /data/mysql/
chown -R mysql.mysql /data/mysql
chmod -R 700 /data/mysql
- 修改mysql的配置文件!!!注意mysql8中真实的配置文件是
/etc/mysql/mysql.conf.d/mysqld.cnf
。可能由于版本更新原因,许多较久的博客写出的配置文件目录并不对。
在此也提供一个验证方法。可以在感觉可能是配置文件的文件中的[mysqld]中添加一行skip-grant-tables
(这是使localhost直接可以mysql进入client不需要输密码的命令),本来本地连接mysql需要mysql -u root -p
输密码。加了这行命令是无需输密码直接进的。
cp /etc/mysql/mysql.conf.d/mysqld.cnf /etc/mysql/mysql.conf.d/mysqld.cnf.bak #备份初始配置文件
vim /etc/mysql/mysql.conf.d/mysqld.cnf #!!这个才是真实有效的目录 不需要改/etc/my.cnf
修改第38行为datadir = /data/mysql #改成你想修改的存储目录位置
- 改启动文件
vim /etc/apparmor.d/usr.sbin.mysqld
在第59行后面添加两行:
/data/mysql/ r,
/data/mysql/** rwk,
- 配置apparmor 这个文件本身是不存在的,直接创建一波虎牙好了
vim /etc/apparmor.d/tunables/alias
在最后添加别名
alias /var/lib/mysql/ -> /data/mysql/,
- 重启
systemctl restart apparmor
/etc/init.d/mysql restart
如果不启动apparmor
报错:
root@linww-PowerEdge-T630:/etc/apparmor.d/tunables# service mysql start
Job for mysql.service failed because the control process exited with error code.
See "systemctl status mysql.service" and "journalctl -xe" for details.
看/var/log/mysql/error.log中
会看到文件读取错误,是由于安全管理的问题
如果启动apparmor失败的话,需要去安装,安装后即可使用,这是个安全相关的验证软件。
sudo apt install apparmor
- 连接mysql验证看存储目录改了没