无法移动mysql数据目录

时间:2013-07-30 06:40:32

标签: mysql archlinux mariadb

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

我现在要做什么?

3 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

另外检查你的分区是否已满,这是我的情况。

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

因此,为了快速解决问题,我没有使用llvm或gparted,而是缩小了我的/swapfile尺寸。