Ubuntu 16.04 Linux系统下自定义MySQL数据库目录

大伟哥 提交于 2018-03-24,周六, 22:43

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

    或者

    1. sudo mkdir -p /home/daweibro/data/mysql
    2. sudo cp -R /var/lib/mysql/. /home/daweibro/data/mysql/
    3. sudo chown -R mysql:mysql /home/daweibro/data/mysql
    4. sudo mv /var/lib/mysql /var/lib/mysql-backup

    然后查看新的数据库目录本身以及里面所有文件/文件夹的属性,确保以上操作无误:

    1. sudo ll /home/david/data/mysql
    2. 总用量 110640
    3. drwxrwxr-x 6 david david 4096 324 12:15 ./
    4. drwxrwxr-x 4 david david 4096 320 15:20 ../
    5. -rw-r----- 1 mysql mysql 56 324 12:15 auto.cnf
    6. -rw-r--r-- 1 mysql mysql 0 324 12:15 debian-5.7.flag
    7. -rw-r----- 1 mysql mysql 369 324 12:15 ib_buffer_pool
    8. -rw-r----- 1 mysql mysql 12582912 324 12:15 ibdata1
    9. -rw-r----- 1 mysql mysql 50331648 324 12:15 ib_logfile0
    10. -rw-r----- 1 mysql mysql 50331648 324 12:15 ib_logfile1
    11. drwxr-x--- 2 mysql mysql 4096 324 12:15 mysql/
    12. drwxr-x--- 2 mysql mysql 4096 324 12:15 performance_schema/
    13. drwxr-x--- 2 mysql mysql 4096 324 12:15 phpmyadmin/
    14. drwxr-x--- 2 mysql mysql 12288 324 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,注释掉原来的文件夹,加入新的文件夹,如下面代码样式:

    1. # Allow data dir access
    2. # /var/lib/mysql/ r,
    3. # /var/lib/mysql/** rwk,
    4. /home/daweibro/data/mysql/ r,
    5. /home/daweibro/data/mysql/** rwk,

    修改文件/etc/apparmor.d/abstractions/mysql,注释掉原来的文件夹,加入新的文件夹,如下面代码样式:

    1. # /var/lib/mysql{,d}/mysql{,d}.sock rw,
    2. /home/davidbro/data/mysql{,d}/mysql{,d}.sock rw,
  • 5. 重启AppArmor服务,重启MySQL服务。

    上述修改完成并保存后,需要重新启动重启AppArmor服务后才能正常启动MySQL服务:

    1. sudo /etc/init.d/apparmor restart
    2. [ ok ] Restarting apparmor (via systemctl): apparmor.service.
    3. sudo /etc/init.d/mysql start
    4. [ ok ] Starting mysql (via systemctl): mysql.service.

到这里,MySQL数据库的存放目录就由原来的/var/lib/mysql迁移到了现在的/home/daweibro/data/mysql了。如果启动过程中出现其他错误,可以查看系统日志,根据日志的提示进行相应的操作来解决问题。

标签

添加新评论

此字段内容将保密,不会被其他人看见。

受限制的 HTML

  • 允许的HTML标签:<a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>
  • 自动断行和分段。
  • 网页和电子邮件地址自动转换为链接。
验证码
发布评论前,请通过下面的验证,以免被当作垃圾评论机器人屏蔽。
9 + 1 =
计算出这道简单的算术题并键入答案。例如、1+3,就输入 4。