type
Post
status
Published
slug
2023/05/11/How-to-Change-the-Default-MySQL/MariaDB-Data-Directory-in-Arch-Linux
summary
tags
Linux
工具
category
技术分享
icon
password
new update day
Property
Oct 22, 2023 01:31 PM
created days
Last edited time
Oct 22, 2023 01:31 PM
MySQL 和 MariaDB 是两种流行的关系型数据库管理系统,它们可以在 Linux 上运行。它们通常将数据存储在 /var/lib/mysql 目录下,这是它们的默认数据目录。但是,有时候你可能想要将数据目录更改到其他位置,比如一个单独的分区或者一个外部硬盘。
在本文中,我们将介绍如何在 Linux 中更改 MySQL 或 MariaDB 的默认数据目录。我们假设你已经安装了 MySQL 或 MariaDB,并且知道如何使用命令行。

步骤 1:停止 MySQL/MariaDB 服务

在更改数据目录之前,你需要先停止 MySQL 或 MariaDB 的服务,以避免数据损坏或丢失。你可以使用以下命令来停止服务:
# 对于 MySQL sudo systemctl stop mysql # 对于 MariaDB sudo systemctl stop mariadb
如果你没有使用 systemctl 命令,你也可以使用 service 命令来停止服务:
# 对于 MySQL sudo service mysql stop # 对于 MariaDB sudo service mariadb stop

步骤 2:复制数据目录到新位置

接下来,你需要将原来的数据目录复制到新的位置。你可以使用 cp 命令来复制目录,但是你需要加上 -a 选项来保留目录的属性和权限。例如,如果你想要将数据目录复制到 /mnt/data/mysql ,你可以使用以下命令:
sudo cp -R -p /var/lib/mysql/* /mnt/data/mysql
💡
注意:你需要确保新的位置有足够的空间来存储数据,并且有正确的权限和所有权。你可以使用 df -h 命令来查看磁盘空间,使用 chmodchown 命令来修改权限和所有权。
sudo chown -R mysql:mysql /mnt/data/mysql

步骤 3:修改配置文件(以 archlinux 为例)

然后,你需要修改 MySQL 或 MariaDB 的配置文件,以指定新的数据目录。配置文件通常位于 /etc/my.cnf 或者 /etc/mysql/my.cnf 。你可以使用任何文本编辑器来修改配置文件,比如 nano 或者 vi 。例如,你可以使用以下命令来打开配置文件:
sudo nano /etc/my.cnf
在配置文件中,你需要找到 [mysqld] 部分,并添加或修改 datadir 选项,以指定新的数据目录。例如,如果你将数据目录复制到 /mnt/data/mysql ,你可以添加或修改如下:
  • /etc/my.cnf
# # This group is read both by the client and the server # use it for options that affect everything # [client-server] port=3306 socket=/data/mysql/mysql.sock # # include *.cnf from the config directory # !includedir /etc/my.cnf.d
  • /etc/my.cnf.d/server.cnf
[mysqld] datadir=/data/mysql socket=/data/mysql/mysql.sock

步骤5:修改 systemd service 文件

  • 修改读写路径
#ReadWritePaths=-/var/lib/mysql ReadWritePaths=-/data/mysql
  • 如果你将数据放在了 /home 等文件夹,关闭主目录保护
# Prevent accessing /home, /root and /run/user ProtectHome=false

步骤6:启动 MySQL 数据库、确实修改是否成功

  • 启动 MySQL 数据库
# 对于 MySQL sudo systemctl start mysql # 对于 MariaDB sudo systemctl start mariadb
  • 查看数据目录
# mysql -u root -p -e "SELECT @@datadir;"
notion image
  • 创建一个数据库进行测试
# mysql -u root -p -e "CREATE DATABASE tecmint;"
notion image

参考资料

 
欢迎加入喵星计算机技术研究院,原创技术文章第一时间推送。
notion image
 
懒羊羊睡觉壁纸mysql 批量导入 csv 大文件