MySQL不同的数据库位置

MySQL不同的数据库位置

我的根分区上没有足够的空间来存储数据库。

$ df -h
Filesystem                         Size  Used Avail Use% Mounted on
/dev/mapper/ManjaroVG-ManjaroRoot   29G   21G  6.4G  77% /
dev                                1.9G     0  1.9G   0% /dev
run                                1.9G  852K  1.9G   1% /run
tmpfs                              1.9G   76K  1.9G   1% /dev/shm
tmpfs                              1.9G     0  1.9G   0% /sys/fs/cgroup
tmpfs                              1.9G  596K  1.9G   1% /tmp
/dev/mapper/ManjaroVG-ManjaroHome  197G   54G  133G  29% /home
/dev/sda1                          247M   88M  147M  38% /boot
tmpfs                              383M  8.0K  383M   1% /run/user/1000

更改 my.cnf 中的 datadircnf到新位置导致权限问题([警告]无法创建测试文件/home/u/tmp/mysql/acpfg.lower-test

如何更改Linux下MariaDB/MySQL存储数据库的目录(例如更改为/home/u/tmp/mysql)?

答案1

您可以重新配置 MySQL 以在不同位置查找数据目录,或者在原始位置上绑定安装新位置。

mysql在执行这些更改之前,请确保服务已停止。

然后,将所有文件和子目录从原始位置移动到新位置。

重新配置MySQL

编辑/etc/my.cnf并更改datadir为:

datadir=/home/u/tmp/mysql

或者...

绑定挂载

使用绑定安装将新位置安装在原始位置上:

mount --bind /home/u/tmp/mysql /var/lib/mysql

一旦您对一切正常运行感到满意,请编辑您的/etc/fstab以使其永久化:

/home/u/tmp/mysql /var/lib/mysql  none  bind 0 0

文件权限

无论您选择哪种方法,您都需要确保新位置的权限正确,如下所示:

顶级目录 ( /home/u/tmp/mysql) 和下面的所有内容都应由用户和组拥有mysql(假设mysql在 Arch Linux 上运行):

# chown -R mysql. /home/u/tmp/mysql

所有文件是:

# find /home/u/tmp/mysql/ -type f -exec chmod 0660 {} \;

所有目录都是:

# find /home/u/tmp/mysql/* -type d -exec chmod 0700 {} \;

顶层目录是:

# chmod 0755 /home/u/tmp/mysql

答案2

像这样的设置会进入 MySQL 配置文件(例如 /etc/mysql/my.cnf;确切位置取决于您的系统)。有问题的设置是 datadir,请参阅http://dev.mysql.com/doc/refman/5.7/en/server-options.html#option_mysqld_datadir了解更多信息。

相关内容