Mysql修改数据文件默认目录datadir

时间:2022-09-21 13:12:03
  • 场景:mysql 数据库的数据文件默认安装的路径在/var/lib/mysql,但是实际中,我们在安装时常常就需要定制安装数据库路径,比如/data/mysql,或者/opt/mysql,通常是一个单独的一块盘或者分区,这样有利于性能调优和保护数据安全,同时也方便进行维护。

  • 步骤:

    1. Stop MySQL:

      service mysql stop
    2. Change Data Directory:

      // 新建文件夹用于存放数据,并把mysql默认的数据文件拷贝至此文件夹
      mkdir -p /data
      cp -rap /var/lib/mysql /data 或者 mv /var/lib/mysql /data

      // 改变新建文件夹的属主
      chown -R -v mysql:mysql /data/mysql

      // 现在编辑MySQL的默认配置文件/etc/my.cnf 修改datadir和socketvariable。
      vi /usr/my.cnf
      Change From: datadir=/var/lib/mysql
      socket=/var/lib/mysql/mysql.sock
      Change To: datadir=/data/mysql
      socket=/data/mysql/mysql.sock
    3. 为mysql.sock加连接:

      // 比如说实际的mysql.sock在 /data/mysql/mysql.sock 下
      ln -s /data/mysql/mysql.sock /var/lib/mysql/mysql.sock;
    4. Start MySQL:

      service mysql start
  • Q&A:

    • Q:以下是mysql数据目录修改出现:
      ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock’ ,本例是将Mysql的数据目录移动到了/home/data/下,即mysql.sock所在的真实目录为/home/data/mysql/mysql.sock,mysql有tcp连接和socket连接方式,而上面这种错误一般是因为mysql是使用rpm方式安装的,它会自动寻找 /var/lib/mysql/mysql.sock 这个文件,是一种socket连接方式。

    • A:常见解决办法如下:

      1. 创建/修改文件 /etc/my.cnf文件,在[mysqld]上面添加:

        [client]
        // password=your_password
        port=3306
        // 在这里写上你的mysql.sock的正确位置
        socket=/home/data/mysql/mysql.sock
      2. 指定IP地址,使用tcp方式连接mysql,而不使用本地socket方式:

        mysql -h127.0.0.1 -uuser -ppassword
      3. 为 mysql.sock 加个连接,比如说实际的mysql.sock在 /home/data/mysql/ 下,则:

        ln -s /home/data/mysql/mysql.sock /var/lib/mysql/mysql.sock