ubuntu下修改mysql默认data路径

由于ubuntu默认的mysql路径是在/var/lib/mysql下,很多时候我们如果没有挂载其它分区在/var的时候,随着网站逐渐浏览和添加内容,数据容量也会越来越大,自然磁盘空间也会比较吃紧。因此我们就需要把mysql的data路径转移到其它目录下。

今天在转移的时候走了不少弯路,最后经过反复尝试后得到了比较精简的步骤,提炼如下。

设置新data路径(假设新路径为/data/mysql)这里需要说明的就是,最开始我图省事使用了mv来移动,随后发现在设置完路径后mysql无法访问。因此为了保险起见还是按照这里的步骤来吧。

建立新的路径

sudo mkdir -p /data/mysql

复制数据

sudo cp -a /var/lib/mysql/* /data/mysql

修改文件夹权限

sudo chown -R mysql:mysql /data/mysql

修改配置文件

sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf

查找并用#注释以下

datadir = /var/lib/mysql

新增

datadir = /data/mysql

需要提醒的是:单只修改mysql的config文件是不够的,在你重启mysql服务的时候会发现启动失败。原因则是ubuntu里有一个访问控制系统apparmor,因此我们还需要在这里修改一下才能完全成功。

修改安全保护文件

sudo vim /etc/apparmor.d/usr.sbin.mysqld

查找并用#注释以下两节

/var/lib/mysql r,

/var/lib/mysql/** rwk,

新增

/data/mysql r,

/data/mysql/** rwk,

修改访问控制文件

sudo vim /etc/apparmor.d/abstractions/mysql

注释掉

/var/lib/mysql/mysql.sock rw

新增

/data/mysql/mysql.sock rw

重启服务(必须重启才能生效对apparmor的修改)

/etc/init.d/apparmor restart

/etc/init.d/mysql restart

这时候再访问就会发现已经修改成功了,数据的读写都经由新路径实现。