Ubuntu Server下安装MySQL数据库以后,默认的数据存放目录是/var/lib/mysql,正常使用是没有问题的,但是因为一些特别的原因,比如说为了方便重新安装系统,或者VPS服务器硬盘不够大需要另外购买并挂载数据盘,就需要我们修改默认的数据存放目录,比如说把数据库文件放在/home/user/data, 或者/mnt/data目录下。这里大伟哥说一下具体的步骤, 在Ubuntu Server 16.04 下测试通过。
-
1. 停止MySQL服务。
sudo service mysql stop 或者
sudo /etc/init.d/mysql stop -
2. 移动或复制数据库文件到新的目录,并把新的目录和文件的所有者和所属组仍旧指定为mysql:
sudo mv /var/lib/mysql /home/daweibro/data/mysql 或者
sudo mkdir -p /home/daweibro/data/mysql sudo cp -R /var/lib/mysql/. /home/daweibro/data/mysql/ sudo chown -R mysql:mysql /home/daweibro/data/mysql sudo mv /var/lib/mysql /var/lib/mysql-backup 然后查看新的数据库目录本身以及里面所有文件/文件夹的属性,确保以上操作无误:
sudo ll /home/david/data/mysql 总用量 110640 drwxrwxr-x 6 david david 4096 3月 24 12:15 ./ drwxrwxr-x 4 david david 4096 3月 20 15:20 ../ -rw-r----- 1 mysql mysql 56 3月 24 12:15 auto.cnf -rw-r--r-- 1 mysql mysql 0 3月 24 12:15 debian-5.7.flag -rw-r----- 1 mysql mysql 369 3月 24 12:15 ib_buffer_pool -rw-r----- 1 mysql mysql 12582912 3月 24 12:15 ibdata1 -rw-r----- 1 mysql mysql 50331648 3月 24 12:15 ib_logfile0 -rw-r----- 1 mysql mysql 50331648 3月 24 12:15 ib_logfile1 drwxr-x--- 2 mysql mysql 4096 3月 24 12:15 mysql/ drwxr-x--- 2 mysql mysql 4096 3月 24 12:15 performance_schema/ drwxr-x--- 2 mysql mysql 4096 3月 24 12:15 phpmyadmin/ drwxr-x--- 2 mysql mysql 12288 3月 24 12:15 sys/ -
3.修改MySQL配置文件
网上找到的很多博文帖子,都说是要修改的配置文件是/etc/mysql/my.cnf。没错,这是MySQL的配置文件,但是这个文件本身没有配置内容,还是又引用了两个目录下的其他配置文件,这两个目录分别是/etc/mysql/conf.d/和/etc/mysql/mysql.conf.d/。通过查看,大伟哥发现真正的配置内容其实是定义在/etc/mysql/mysql.conf.d/mysqld.cnf中,因此我们需要修改/etc/mysql/mysql.conf.d/mysqld.cnf文件,把里面的:
datadir = /var/lib/mysql 修改成:
datadir = /home/daweibro/data/mysql -
4. 修改AppArmor安全策略,使得MySQL可以访问到新的数据库目录下的文件。
修改文件/etc/apparmor.d/usr.sbin.mysqld,注释掉原来的文件夹,加入新的文件夹,如下面代码样式:
# Allow data dir access # /var/lib/mysql/ r, # /var/lib/mysql/** rwk, /home/daweibro/data/mysql/ r, /home/daweibro/data/mysql/** rwk, 修改文件/etc/apparmor.d/abstractions/mysql,注释掉原来的文件夹,加入新的文件夹,如下面代码样式:
# /var/lib/mysql{,d}/mysql{,d}.sock rw, /home/davidbro/data/mysql{,d}/mysql{,d}.sock rw, -
5. 重启AppArmor服务,重启MySQL服务。
上述修改完成并保存后,需要重新启动重启AppArmor服务后才能正常启动MySQL服务:
sudo /etc/init.d/apparmor restart [ ok ] Restarting apparmor (via systemctl): apparmor.service. sudo /etc/init.d/mysql start [ ok ] Starting mysql (via systemctl): mysql.service.
到这里,MySQL数据库的存放目录就由原来的/var/lib/mysql迁移到了现在的/home/daweibro/data/mysql了。如果启动过程中出现其他错误,可以查看系统日志,根据日志的提示进行相应的操作来解决问题。
- 604 阅读
添加新评论