更改MySQL数据文件目录位置

论坛: 

有时候我们需要更改mysql数据文件的所在位置,下面以yum安装的mysql为例,把默认的data目录/var/lib/mysql更改为/home/mysql。
1、停止mysqld
    service mysqld stop

2、修改my.cnf
在[mysqld]中,把datadir=/var/lib/mysql更改为datadir=/home/mysql,把socket=/var/lib/mysql.sock更改为socket=/home/mysql/mysql.sock,最终修改如下:

    [mysqld]
    datadir=/home/mysql
    socket=/home/mysql/mysql.sock

在[mysql]中添加socket路径:

    socket=/home/mysql/mysql.sock

3、移动data目录
    mv /var/lib/mysql  /home

4、修改启动文件/etc/init.d/mysqld
把get_mysql_option mysqld datadir "/var/lib/mysql"更改为get_mysql_option mysqld datadir "/home/mysql"。

Tags: 

在MySQL中,是允许存在多个 my.cnf 配置文件的,有的能对整个系统环境产生影响,例如:/etc/my.cnf。有的则只能影响个别用户,例如:~/.my.cnf。

MySQL读取各个my.cnf配置文件的先后顺序是:

/etc/my.cnf
/etc/mysql/my.cnf
/usr/local/mysql/etc/my.cnf
~/.my.cnf
其他自定义路径下的my.cnf,例如:/data/mysql/yejr_3306/my.cnf

不管是mysqld服务器端程序,还是mysql客户端程序,都可以采用下面两个参数来自行指定要读取的配置文件路径:

–defaults-file=#, 只读取指定的文件(不再读取其他配置文件)
–defaults-extra-file=#, 从其他优先级更高的配置文件中读取全局配置后,再读取指定的配置文件(有些选项可以覆盖掉全局配置从的设定值)

因此,可以看到,如果你修改的是非“著名”目录下的 my.cnf,有可能看起来是不生效的,需要自行指定,或者统一放在 /etc/my.cnf 下,采用多实例的方式来管理即可。

dashan 答复于