我正在尝试移动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)
我现在要做什么?
答案 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
尺寸。