如何在Ubuntu中更改mysql默认数据目录

时间:2019-08-20 17:58:12  来源:igfitidea点击:

默认情况下,mysql服务器将数据保存在/var/lib/mysql中。

更改mysql默认数据目录步骤

(1)复制新的mysql目录到服务器中的新位置
(2)编辑my.cnf文件,设置新的mysql数据目录路径
(3)编辑/etc/apparmor.d/usr.sbin.mysqld文件,并为新的mysql数据目录添加2行配置。
(4)重启mysql服务器服务。

这里,我们将把/var/lib/mysql复制到/var/lib/mysqlnew

查看当前数据库目录

$ /var/lib/mysql/linuxdb
-rw-r–r– 1 mysql mysql 0 May 1 14:54 debian-5.5.flag
-rw-rw—- 1 mysql mysql 27262976 May 18 12:58 ibdata1
-rw-rw—- 1 mysql mysql 5242880 May 18 12:58 ib_logfile0
-rw-rw—- 1 mysql mysql 5242880 Mar 5 11:07 ib_logfile1
-rw-rw—- 1 mysql mysql 6 May 1 14:55 mysql_upgrade_info

所有者和组是mysql:mysql

更改mysql数据目录

  1. 将/var/lib/mysql复制到新目录
root@Hyman-sapplica:/var/lib# cp -prvf /var/lib/mysql /var/lib/mysqlnew

root@Hyman-sapplica:/var/lib# ls -ld mysqlnew/
drwx—— 7 mysql mysql 4096 May 18 13:00 mysqlnew/

root@Hyman-sapplica:/var/lib# ls -la mysqlnew/
total 36896
drwx—— 7 mysql mysql 4096 May 18 13:00 .
drwxr-xr-x 83 root root 4096 May 18 12:56 ..
-rw-r–r– 1 mysql mysql 0 May 1 14:54 debian-5.5.flag
-rw-rw—- 1 mysql mysql 27262976 May 17 19:31 ibdata1
-rw-rw—- 1 mysql mysql 5242880 May 18 13:00 ib_logfile0
-rw-rw—- 1 mysql mysql 5242880 Mar 5 11:07 ib_logfile1
drwx—— 2 mysql mysql 4096 May 1 14:55 mysql
-rw-rw—- 1 mysql mysql 6 May 1 14:55 mysql_upgrade_info
drwx—— 2 mysql mysql 4096 May 1 14:55 performance_schema
drwx—— 2 mysql mysql 4096 Mar 5 11:07 test

root@Hyman-sapplica:/var/lib#
  1. 编辑my.cnf文件

修改 datadir的值。

vi /etc/mysql/my.cnf
#datadir = /var/lib/mysql
datadir = /var/lib/mysqlnew

如果这时尝试重新启动mysql服务,它将不会启动,并会报错。(在/var/log/syslog查看)

# tail -3 /var/log/syslog
May 18 12:58:19 mypc kernel: [ 7780.046897] type=1400 audit(1368862099.538:51): apparmor="STATUS" operation="profile_replace" name="/usr/sbin/mysqld" pid=8171 comm="apparmor_parser"
May 18 12:58:19 mypc kernel: [ 7780.065904] type=1400 audit(1368862099.558:52): apparmor="DENIED" operation="mknod" parent=1 profile="/usr/sbin/mysqld" name="/var/lib/mysqlnew/mypc.lower-test" pid=8175 comm="mysqld" requested_mask="c" denied_mask="c" fsuid=0 ouid=0
May 18 12:58:19 mypc kernel: [ 7780.065975] type=1400 audit(1368862099.558:53): apparmor="DENIED" operation="mknod" parent=1 profile="/usr/sbin/mysqld" name="/var/lib/mysqlnew/mypc.lower-test" pid=8175 comm="mysqld" requested_mask="c" denied_mask="c" fsuid=0 ouid=0
May 18 12:58:19 mypc kernel: [ 7780.069767] type=1400 audit(1368862099.562:54): apparmor="DENIED" operation="open" parent=1 profile="/usr/sbin/mysqld" name="/var/lib/mysqlnew/mysql/plugin.frm" pid=8175 comm="mysqld" requested_mask="r" denied_mask="r" fsuid=121 ouid=121
  1. 原因是apparmor拒绝了mysql的新配置。
    所以要在/etc/apparmor.d/usr.sbin.mysqld 中修改新的路径,并重启 apparmor服务。
# vi /etc/apparmor.d/usr.sbin.mysqld

 /var/lib/mysql/ r,
/var/lib/mysql/** rwk,
/var/lib/mysqlnew/ r,
/var/lib/mysqlnew/** rwk,

# /etc/init.d/apparmor restart
  1. 重启mysql服务,尝试连接mysql服务器。
#/etc/init.d/mysql restart

# mysql -u root -p