1

我正在尝试移动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)

我现在该怎么办?

4

3 回答 3

1

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

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

于 2013-07-30T07:28:46.857 回答
0

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

于 2013-09-08T06:15:45.430 回答
0

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

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

因此,为了快速修复,我没有弄乱 llvm 或 gparted,而是减小了/swapfile尺寸。

于 2018-01-17T11:49:19.767 回答