在linux系统中,mysql的数据目录是存储所有数据库核心文件的位置,包括数据库表结构、表数据、日志文件等内容,不同的安装方式和系统环境,其默认路径可能存在区别,同时也可以通过配置自定义路径。

默认数据目录的常见位置
如果是通过系统包管理器(如yum、apt)安装的mysql,不同发行版的默认数据目录通常如下:
- CentOS、RHEL等基于RPM的系统,默认数据目录一般为
/var/lib/mysql - Ubuntu、Debian等基于Deb的系统,默认数据目录通常也是
/var/lib/mysql - 如果是通过二进制包手动安装的mysql,默认数据目录一般在安装目录下的data文件夹,比如
/usr/local/mysql/data
通过mysql命令查询数据目录
如果mysql服务处于运行状态,可以直接登录mysql客户端,执行如下命令查询当前的数据目录路径:
-- 登录mysql后执行,查看datadir变量的值 SHOW VARIABLES LIKE 'datadir';
执行后返回的结果中,Value字段的值就是当前mysql实例使用的数据目录绝对路径。
通过配置文件查找数据目录
mysql的配置文件my.cnf中会记录数据目录的配置,我们可以通过查看配置文件来确认路径,常见的配置文件位置有:
/etc/my.cnf/etc/mysql/my.cnf/usr/local/mysql/etc/my.cnf- mysql安装目录下的my.cnf文件
打开配置文件后,查找[mysqld]段落下的datadir配置项,对应的值就是数据目录路径,示例配置如下:
[mysqld] # 数据目录配置 datadir=/var/lib/mysql # 其他配置项 socket=/var/lib/mysql/mysql.sock
通过进程信息定位数据目录
如果mysql服务正在运行,还可以通过查看mysqld进程的启动参数来定位数据目录,执行如下命令:
# 查看mysqld进程的启动参数 ps -ef | grep mysqld
在输出的进程信息中,找到--datadir对应的参数值,就是当前使用的数据目录路径。如果没有显示该参数,说明使用的是默认配置或者配置文件中定义的路径。
如何修改mysql数据目录
如果需要自定义mysql的数据目录,可以按照以下步骤操作:
- 停止mysql服务:
systemctl stop mysqld或者service mysql stop - 将原有数据目录的文件复制到新的目录,比如新的目录为
/data/mysql:cp -a /var/lib/mysql/* /data/mysql/ - 修改新目录的属主和属组为mysql用户:
chown -R mysql:mysql /data/mysql - 修改my.cnf配置文件中的
datadir和socket配置项,指向新的路径 - 启动mysql服务:
systemctl start mysqld或者service mysql start
修改完成后,可以再次通过SHOW VARIABLES LIKE 'datadir'命令确认数据目录是否生效。