如何在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数据目录
- 将/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#
- 编辑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
- 原因是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
- 重启mysql服务,尝试连接mysql服务器。
#/etc/init.d/mysql restart # mysql -u root -p