使用Ubuntu的apt包管理工具安装的mysql数据库缺省情况下将数据库文件保存在/勤奋蜗牛/lib/mysql目录中。 随着时间的推移,数据库越来越大,我们计划装载新的硬盘并将其专用于mysql数据
使用Ubuntu的apt包管理工具安装的mysql数据库缺省情况下将数据库文件保存在/勤奋蜗牛/lib/mysql目录中。 随着时间的推移,数据库会变得越来越大,所以我们计划装载新硬盘并将其专用于mysql数据库。
1 .确定mysql数据库文件的存储目录
缺省值在/勤奋蜗牛/lib/mysql目录下。 首先登录自己的mysql数据库。 例如,使用根帐户登录,然后使用以下查询语句进行查询:
show勤奋的蜗牛iables like '%dir% ';
要获取数据库文件配置信息,请执行以下操作:
您可以看到datadir的值为/勤奋蜗牛/lib/mysql/是当前的数据库文件存储目录。
另一个basedir参数表示mysql数据库的安装位置,迁移数据库的文件位置不需要更改此参数。
2 .将数据库文件迁移到新目录
首先,使用以下命令停止mysql数据库服务:
sudo /etc/init.d/mysql stop
将数据库迁移到/mnt/data,因为新磁盘装载在/mnt/data目录中。
可以使用2.1mv命令将原始数据库目录文件移动到新目录中。 优点是不简单,不更改原始数据库文件的权限,也不更改用户和用户组所属。
sudo mv /勤奋蜗牛/lib/mysql /mnt/data/
也可以使用2.2CP复制命令将原始数据库目录文件复制到新目录中。 优点如下。 万一迁移失败,恢复工作相对简单,确认迁移成功后再删除原始数据库目录文件也不晚。 为了不影响复制的数据库目录文件的权限和用户组的归属问题,在使用cp命令时添加-a参数。
sudo cp -a /勤奋蜗牛/lib/mysql /mnt/data/注: /勤奋蜗牛/lib/mysql目录属于在mysql数据库中创建的mysql用户和mysql用户组命令请使用sudo
如果迁移成功,mysql数据库文件将迁移到/mnt/data/目录下,表明目录文件中的用户组仍然属于mysql。
3、修改个人资料
需要更改的配置文件有三个。
3.1 my.cnf文件
mysql数据库从/etc/my.cnf、/etc/mysql/my.cnf、/usr/etc/my.cnf、~/.my.cnf四个位置开始按优先级顺序排列my.cnf配置在/etc/my.cnf位置找不到此配置文件,因为Ubuntu缺省将my.cnf配置文件放在/etc/mysql/my.cnf位置。
选择您的文本编辑器以编辑my.cnf配置文件。 因为我使用的是vim,所以我使用sudo vim /etc/mysql/my.cnf。 同样需要sudo,以root权限进行编辑。 将[mysqld]选项卡下的datadir属性值更改为新的数据库目录路径/mnt/data/mysql,如下图所示。
修改后保存并退出。
3.2 usr.bin.mysqld文件
Ubuntu使用了apparmor安全模块,因此其结构类似于沙箱,可以限制软件在运行时的行为,包括可以对哪些目录和文件进行读写锁定。
由于数据库文件路径已更改,在修改mysql数据库的apparmor配置文件并向其中添加读写和锁定新数据库文件目录和文件的权限的同时,还会修改原始/勤奋定制/lib/mymor配置文件mysql数据库的apparmor配置文件路径位于/etc/apparmor.d/usr.sbin.mysqld中。 使用以下命令编辑此配置文件:
SDO vim/etc/apparmor.d/usr.sbin.mysqld
找到其中的
/勤奋蜗牛/lib/mysql/r
/勤奋的蜗牛/lib/mysql/** rwk、
两行权限声明可以在前面加上#进行注释。 然后,根据格式添加新路径的权限声明。
/mnt/data/mysql/r,
/mnt/data/mysql/** rwk,
结果如下。
保存并关闭。
3.3 abstractions/mysql文件
由于usr.bin.mysqld文件引用了abstractions/mysql文件,因此将导入abstractions/mysql文件的权限声明。 因此,还将修改此文件。
sudo vim/etc/apparmor.d/abstractions/MySQL
您也可以添加新数据库文件路径的套接字文件权限,并删除或注释掉以完整路径申请的权限。 效果如下。
保存并退出。
4、重新启动数据库
成功修改配置文件后,可以重新启动数据库。 在重新启动数据库之前,必须重新加载apparmor配置文件,然后使用以下命令重新加载:
sudo/etc/init.d/apparmor restart
重装成功后,可以使用以下命令启动数据库:
sudo /etc/init.d/mysql start
五、权限问题
经过上诉程序,数据库可能无法启动。 继续登录数据库将导致有关sock的以下错误:
error2002(hy000 ) : can ' tconnecttolocalmysqlserverthroughsocket ' /勤奋蜗牛/run/MySQLD/MySQLD.sock'(2) )。
查看数据库启动错误日志,sudo vim /勤奋蜗牛/log/mysql/error.log,还会看到类似Table 'plugin' is read only的错误。
这也是新数据库文件目录的权限的原因。