MySQL 数据目录是存储数据库文件的核心位置,包括表数据、索引、系统表空间等。在实际使用中,可能需要更改默认的数据目录(如 /var/lib/mysql)以适应磁盘空间、性能优化或安全策略。以下是配置 MySQL 数据目录的完整方法。
1. 停止 MySQL 服务
修改数据目录前,必须先停止 MySQL 服务,避免数据损坏。
Linux 系统常用命令: systemctl stop mysql (Debian/Ubuntu) systemctl stop mysqld (CentOS/RHEL)2. 复制现有数据到新目录
假设要将数据目录迁移到 /data/mysql,需先创建目录并复制原数据。
创建新目录:mkdir -p /data/mysql 复制数据:cp -R /var/lib/mysql/* /data/mysql/ 设置权限:chown -R mysql:mysql /data/mysql 注意:不要用 mv 直接移动,建议先复制验证无误后再删除原目录。3. 修改 MySQL 配置文件
编辑 MySQL 的主配置文件 my.cnf 或 mysqld.cnf,通常位于 /etc/mysql/my.cnf 或 /etc/my.cnf。
在 [mysqld] 段落中添加或修改以下参数:
[mysqld] datadir = /data/mysql socket = /data/mysql/mysql.sock
如果使用了 symbolic link 或自定义路径,确保 socket 路径一致。
4. 更新系统配置(可选)
某些 Linux 发行版使用 AppArmor 或 SELinux,需更新安全策略允许新路径访问。
SELinux:使用 semanage fcontext 添加上下文规则 AppArmor:修改 /etc/apparmor.d/usr.sbin.mysqld,加入新路径权限5. 启动 MySQL 并验证
重启服务并检查是否正常运行。
systemctl start mysql 查看状态:systemctl status mysql 登录 MySQL 执行:SHOW VARIABLES LIKE 'datadir'; 确认路径已变更基本上就这些。只要按步骤操作,注意权限和配置一致性,就能成功更改 MySQL 数据目录。不复杂但容易忽略细节,比如 socket 文件路径或安全模块限制。
