ルートパーティションにデータベースを保存するのに十分なスペースがありません。
$ 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に)変更するにはどうすればよいですか?
別の場所でデータディレクトリを探すように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
このような設定は、MySQL構成ファイルに入力されます(たとえば、/ etc/mysql/my.cnfにあります。正確な場所は、システムによって異なります)。問題の設定はdatadirです。詳細については、 http://dev.mysql.com/doc/refman/5.7/en/server-options.html#option_mysqld_datadir を参照してください。