如何在Linux中更改默认的MySQL / MariaDB数据目录

在本文中,我们将介绍如何将默认的MySQL / MariaDB数据库数据目录(/ var / lib / mysql)更改为CentOS / RHEL和Ubuntu上的不同路径。

CentOS / RHEL 7服务器上安装LAMP的组件后 ,您可能需要执行几件事情。

其中一些与增加Apache和MySQL / MariaDB的安全性有关 ,而其他可能根据我们的设置或需求可能适用。

例如,根据数据库服务器的预期使用情况,我们可能希望将默认数据目录( /var/lib/mysql )更改为不同的位置。 这种情况是由于使用率高,预计这种目录会增长。

否则,存储/var系统可能在一个点崩溃,导致整个系统失败。 更改默认目录的另一种情况是当我们有一个专用的网络共享,我们要用来存储我们的实际数据。

因此,在本文中,我们将介绍如何将默认的MySQL / MariaDB数据目录更改为CentOS / RHEL 7服务器和Ubuntu / Debian发行版的不同路径。

尽管我们将使用MariaDB ,但是除非另有说明,本文所述的概念和本文中采用的步骤都适用于MySQLMariaDB

更改默认的MySQL / MariaDB数据目录

注意 :我们假设我们的新数据目录是/mnt/mysql-data 重要的是要注意,这个目录应该由mysql:mysql

# mkdir /mnt/mysql-data
# chown -R mysql:mysql /mnt/mysql-data

为方便起见,我们将流程分为5个易于遵循的步骤:

第1步:识别当前的MySQL数据目录

首先,使用以下命令识别当前数据目录是非常有价值的。 不要仅仅假定它仍然是/var/lib/mysql因为它可能在过去被改变了。

# mysql -u root -p -e "SELECT @@datadir;"

输入MySQL密码后,输出应该类似。

识别MySQL数据目录

识别MySQL数据目录

第2步:将MySQL数据目录复制到新位置

为避免数据损坏,请停止该服务,如果它正在运行,然后继续。 使用systemd众所周知的命令来做到这一点:

------------- On SystemD ------------- 
# systemctl stop mariadb
# systemctl is-active mariadb
------------- On SysVInit ------------- 
# service mysqld stop
# service mysqld status
OR
# service mysql stop
# service mysql status

如果服务已经关闭,最后一个命令的输出应该如下:

停止MySQL服务

停止MySQL服务

然后递归地将/var/lib/mysql的内容复制到/mnt/mysql-data保存原始权限和时间戳:

# cp -R -p /var/lib/mysql/* /mnt/mysql-data
将MySQL数据目录复制到新位置

将MySQL数据目录复制到新位置

第3步:配置新的MySQL数据目录

编辑配置文件( my.cnf )以指示新的数据目录(在这种情况下为/mnt/mysql-data )。

# vi /etc/my.conf
OR
# vi /etc/mysql/my.conf

找到[mysqld][client]部分,并进行以下更改:

Under [mysqld]:
datadir=/mnt/mysql-data
socket=/mnt/mysql-data/mysql.sock
Under [client]:
port=3306
socket=/mnt/mysql-data/mysql.sock

保存更改,然后继续下一步。

配置新的MySQL数据目录

配置新的MySQL数据目录

第4步:将SELinux安全上下文设置为数据目录

此步骤仅适用于RHEL / CentOS及其衍生产品。

在重新启动MariaDB之前,将SELinux安全上下文添加到/mnt/mysql-data

# semanage fcontext -a -t mysqld_db_t "/mnt/mysql-data(/.*)?"
# restorecon -R /mnt/mysql-data

接下来重新启动MySQL服务。

------------- On SystemD ------------- 
# systemctl stop mariadb
# systemctl is-active mariadb
------------- On SysVInit ------------- 
# service mysqld stop
# service mysqld status
OR
# service mysql stop
# service mysql status

现在,使用与第1步中相同的命令验证新数据目录的位置:

# mysql -u root -p -e "SELECT @@datadir;"
验证MySQL新数据目录

验证MySQL新数据目录

第5步:创建MySQL数据库以确认数据目录

登录到MariaDB,创建一个新的数据库,然后检查/mnt/mysql-data

# mysql -u root -p -e "CREATE DATABASE howtoing;"
检查MySQL新数据目录

检查MySQL新数据目录

恭喜! 您已成功更改MySQL或MariaDB的数据目录。

概要

在这篇文章中,我们讨论了如何更改在CentOS / RHEL 7和Ubuntu / Debian发行版上运行的MySQL或MariaDB服务器中的数据目录。

您对本文有任何问题或意见? 随时让我们知道使用下面的表格 - 我们总是很高兴听到你的声音!