【问题标题】:Fail to move mysql's data directory移动mysql数据目录失败
【发布时间】:2013-07-30 06:40:31
【问题描述】:

我正在尝试移动mysql的数据目录,这是我的步骤:

  • 使用show variables like 'datadir' 知道我的datadir/var/lib/mysql/
  • cd /var/lib/mysql/
  • # mv * /home/elderry/db/
  • gvim /etc/mysql/my.cnf
  • [mysqld] 部分添加这一行: datadir = /home/elderry/db/
  • # systemctl start mysqld

    Job for mysqld.service failed. See 'systemctl status mysqld.service' and 'journalctl -xn' for details.

  • 然后我试了一下:systemctl status mysqld.service

结果:

mysqld.service - MariaDB database server
   Loaded: loaded (/usr/lib/systemd/system/mysqld.service; disabled)
   Active: activating (start-post) (Result: exit-code) since Tue 2013-07-30 14:31:53 CST; 13s ago
  Process: 14174 ExecStart=/usr/bin/mysqld --pid-file=/run/mysqld/mysqld.pid (code=exited, status=1/FAILURE)
  Control: 14175 (mysqld-post)
   CGroup: name=systemd:/system/mysqld.service
           └─control
             ├─14175 /bin/sh /usr/bin/mysqld-post
             └─14293 sleep 1

Jul 30 14:31:53 Kanone mysqld[14174]: 130730 14:31:53 [Warning] Can't create test file /home/elderry/db/Kanone.lower-test
Jul 30 14:31:53 Kanone mysqld[14174]: [71B blob data]
Jul 30 14:31:53 Kanone mysqld[14174]: 130730 14:31:53 [ERROR] Aborting
Jul 30 14:31:53 Kanone mysqld[14174]: 130730 14:31:53 [Note] /usr/bin/mysqld: Shutdown complete
Jul 30 14:31:53 Kanone systemd[1]: mysqld.service: main process exited, code=exited, status=1/FAILURE
  • 如果我想手动启动mysql:mysql -u root -p 输出:

    ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/run/mysqld/mysqld.sock' (2)

我现在该怎么办?

【问题讨论】:

  • 您是否将新的 mysql datadir 目录分配给运行 mariadb 的用户? (或至少给予写权限)
  • @Gryphius,我把它改成了我自己的主目录,我需要给它更多权限吗?
  • chown mysql.mysql /home/elderry/db/

标签: mysql archlinux mariadb


【解决方案1】:

您似乎已将 datadir 移至您的主目录。我认为当您通过服务管理器(在您的情况下为 systemd)启动 mysqld 时,它将作为非特权用户启动(很可能是mysql)。我强烈怀疑该用户是否有权访问用户elderry 的主目录。

因此,解决方案是将您的 datadir 移动到更合适的位置,例如 /var/lib/mysql,然后将此目录分配给运行 mysql 的用户。或者你给mysql用户权限,他可以访问elderry的homedir。

【讨论】:

  • 我更喜欢给mysql用户权限并检查/home/elderry/db中的文件,这些文件没有所有者名称,只有所有者组mysql。我应该创建一个名为mysql 的用户,然后给他权限吗?
  • 如果您以标准方式安装 mariadb (pacman -S mariadb),您已经有一个 mysql 用户并且文件应该属于该用户。还要检查目录本身,而不仅仅是其中的文件。
【解决方案2】:

安装 MariaDB 时,它会自动创建拥有所有数据文件的用户和组 mysql,因此如果您移动数据目录,请确保新数据目录中的所有文件夹、子文件夹、文件都归用户 mysql 和组 mysql 所有。

【讨论】:

    【解决方案3】:

    还要检查您的分区是否未满,我就是这样。

    由于未知原因,将数据移动到另一个分区也不起作用。

    所以为了快速修复,我没有弄乱 llvm 或 gparted,而是减小了 /swapfile 的大小。

    【讨论】:

      猜你喜欢
      • 2018-06-30
      • 1970-01-01
      • 2012-09-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-26
      • 1970-01-01
      相关资源
      最近更新 更多