
Ubuntu日本語フォーラム
ログインしていません。
Raspberry Pi 3にインストールしたUbuntu Mate 16.04にMySQLをインストールしました。
そこで、データディレクトリを外付けHDDに移動しようと考えています。
(外付けHDDは/dataにマウント済みでchmod 777 /dataとしてあります。)
uname -a
は
Linux raspberry 4.4.13-v7+ #893 SMP Wed Jun 8 14:39:18 BST 2016 armv7l armv7l armv7l GNU/Linux
mysqld --version
は
mysqld Ver 5.7.12-0ubuntu1 for Linux on armv7l ((Ubuntu))
となっています。
行ったこと。
・sudo apt-get install mysql-server
・sudo systemctl stop mysql
・sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf
で datadir = /var/lib/mysql から datadir = /data/mysql に変更
・sudo vi /etc/apparmor.d/local/usr.sbin.mysqld
に
/data/mysql r,
/data/mysql/** rwk,
を追加。
・sudo mv /var/lib/mysql /var/lib/mysql.orig
・sudo mysqld --initialize
ここまでで/data/mysqlが作成され、その下に/var/lib/mysql.origと同じファイルやディレクトリが作成されたことを確認しました。
そこで、
sudo systemctl start mysql
を実行すると
Job for mysql.service failed because the control process exited with error code. See "systemctl status mysql.service" and "journalctl -xe" for details.
と出てMySQLの起動に失敗します。
sudo systemctl status mysql.service
の結果は
● mysql.service - MySQL Community Server
Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled)
Active: inactive (dead) (Result: exit-code) since 月 2016-06-13 22:09:16 JST; 20min ago
Process: 4324 ExecStartPre=/usr/share/mysql/mysql-systemd-start pre (code=exited, status=1/FAILURE)
6月 13 22:09:15 raspberry systemd[1]: mysql.service: Unit entered failed state.
6月 13 22:09:15 raspberry systemd[1]: mysql.service: Failed with result 'exit-code'.
6月 13 22:09:16 raspberry systemd[1]: mysql.service: Service hold-off time over, scheduling restart.
6月 13 22:09:16 raspberry systemd[1]: Stopped MySQL Community Server.
6月 13 22:09:16 raspberry systemd[1]: mysql.service: Start request repeated too quickly.
6月 13 22:09:16 raspberry systemd[1]: Failed to start MySQL Community Server.
となっています。
journalctl -xe
の結果は長くてどこがMySQLに関する記述か分かりません。
(必要ならば追記します。)
この設定が間違っている、あるいは足りないなどご教示いただけませんか?
okwaveのMySQLカテゴリにも同じ質問をしていますが、もしかしたらubuntu特有の問題かと思いこちらにも投稿させていただきました。
よろしくお願いいたします。
オフライン
やむを得ず
>sudo cd /var/lib/
>sudo ln -s /data/mysql ./
をしたうえで、
>sudo systemctl start mysql
としてmysqlを動かしました。
(datadir = /var/lib/mysqlに戻しました。)
気持ちが悪い状態なのですが、とりあえず動いてはいるようです。
質問の内容をraspbianで行ったところ、特にエラーもなく動きました。
よって、Ubuntu Mate独自の問題かと思いますが、どこに問題があるかまでは突き止められませんでした。
とりあえずご報告まで。
ありがとうございました。
オフライン
ご質問から半年以上経っていますが ...
私も全く同じ問題にぶつかり、相当苦労して原因を調べました。
原因は次のことのようです。
ubuntu 16.04 では、mysqld が起動するときに、データディレクトリに
debian-5.6.flag (バージョン番号は異なる場合もあり)
というファイル (0 byte) が作られますが、mysql のデータディレクトリを変更
しても、このファイルは常に /var/lib/myssql に書きこまれようとします。
それが理由で、リンクが張られているときには mysqld は正常に起動しますが、
リンクがないと、エラーになります。
これは明らかに ubuntu 16.04 (その元となっている Debian) のバグだと思いますので、
次のバージョンで訂正されることを望みます。
オフライン