如何在Ubuntu中更改MySQL数据库文件的位置
在Ubuntu中,用 apt-get install 安装的 mysql 数据库,默认将数据库文件保存在/var/lib/mysql目录下。如何将其更改到其他目录呢?步骤如下:
1、停止数据库服务
一般用 sudo /etc/init.d/mysql stop 或 sudo service mysql stop 即可。
2、复制数据库当前文件到新目录
为了不影响复制过来数据库文件权限和用户组,使用 cp 命令时要加上-a参数:sudo cp -a /var/lib/mysql /new_path/
另外,还需让 mysql 用户读取的权限有上级目录读写权限。即其它组用户都开放了’r'和‘x'权限。
sudo chmod 755 /up_level_path/
3、修改配置文件
(1)my.cnf 配置文件
mysql数据库会按顺序优先级从/etc/my.cnf、/etc/mysql/my.cnf、/usr/etc/my.cnf、~/.my.cnf四个位置找配置文件,一旦找到就不再继续往下找。Ubuntu 默认将mysql配置文件放在 /etc/mysql/my.cnf 位置。
sudo vim /etc/mysql/my.cnf 将其中[mysqld]标签下的datadir属性值改为新数据库目录路径。
(2)apparmor配置文件
由于Ubuntu使用了apparmor安全模块,就是类似于沙盒运行的一种机制,它可以限制软件在运行时的一些行为,比如对哪些目录和文件可以读写加锁等等。所以要修改 mysql 数据库的 apparmor 配置文件,在将新数据库文件目录和文件的读写及加锁权限添加上去。其中有两个配置文件:
首先,sudo vim /etc/apparmor.d/usr.sbin.mysqld
将其中的
/var/lib/mysql/ r,
/var/lib/mysql/** rwk,
修改为新目录。
其次,sudo vim /etc/apparmor.d/abstractions/mysql
将其中的
/var/lib/mysql/mysql.sock rw,修改为新目录。
4、重启mysql
先重新载入apparmor配置文件,
sudo /etc/init.d/apparmor restart
再启动mysql,sudo service mysql start。