web-dev-qa-db-ja.com

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のdatadirを新しい場所に変更すると、権限の問題が発生しました([警告]テストファイルを作成できません/home/u/tmp/mysql/acpfg.lower-test

LinuxでMariaDB/MySQLがデータベースを保存するディレクトリを(たとえば/ home/u/tmp/mysqlに)変更するにはどうすればよいですか?

3
user977828

別の場所でデータディレクトリを探すように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がArchLinuxでこれらのように実行されると仮定します)。

# 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
5
garethTheRed

このような設定は、MySQL構成ファイルに入力されます(たとえば、/ etc/mysql/my.cnfにあります。正確な場所は、システムによって異なります)。問題の設定はdatadirです。詳細については、 http://dev.mysql.com/doc/refman/5.7/en/server-options.html#option_mysqld_datadir を参照してください。

1
daniel kullmann