Apt-get dist-upgradeを使用してMariaDBを更新しました。 service mysql startの使用を開始しなくなりました。
ただし、rootとして実行することもできます:Sudo -u mysql mysqld_safeその後、MariaDBは正常に起動します。フォルダー/ home/mysqlは、mysqlユーザーおよびグループが所有しています。
この関数でスローされるエラーを見つけました: https://github.com/MariaDB/server/blob/7ff44b1a832b005264994cbdfc52f93f69b92cdc/sql/mysqld.cc#L9865
次に何をすべきかわからない。ポインタはありますか?
/ homeからMariaDB SQLを実行するには、ファイル/usr/lib/systemd/system/mariadb.serviceで、次のように変更します。
ProtectHome=true
へ:
ProtectHome=false
Debian 9では、両方でProtectHomeをfalseに変更する必要があります/lib/systemd/system/mariadb.service
and/lib/systemd/system/[email protected]
次に、Sudo systemctl daemon-reloadを実行します。
たぶんSudo grep -Ri "protecthome" /lib/systemd/system
これがまだ機能しない場合、mysql関連ファイルでProtectHomeの他のインスタンスを検索します
Debian 8(Jessie)および9(Stretch)の更新後の同じ状況。 「apt-get upgrade」の後、コマンド
サーバーは起動に失敗し、エラーをログに記録します:
[警告]テストファイルを作成できません/home/johndoe/UserDatabases/mypcname.lower-test
解決策は、ファイルを変更することです/ lib/systemd/system/mariadb.service値:
ProtectHome=true
に
ProtectHome=false
上記のように。
Thomasの答えは正しいですが、数か月ごとの更新でリセットされます。だからここに恒久的な解決策があります:
systemctl edit mariadb
を使用して、mariadbサービスのデフォルト設定を上書きするファイルを作成します。 (debianでは/etc/systemd/system/mariadb.service.d/override.conf
にあります)
Thomasがファイルで変更したのと同じ設定を設定します。
[Service]
ProtectHome=false
systemctl daemon-reload
を使用して、systemctl構成を再ロードします。
@RedGiantはい、私はそれを解決しました。ここに投稿するのを忘れました。
どうやら.1リリース後は/ homeからSQLを実行できなくなったようです。おそらくこれを回避する方法はありますが、見つかりません。
MySQLは/ home以外の任意の場所から実行できます。私がしたことは、/ homeをアンマウントし(SSD RAIDを/ homeにマウントしました)、ディスクを/ ssdとして再マウントしました。構成のパスを変更したところ、すぐに動作しました。
SELinuxやApparmorを実行していません。
これを回避するには、ホームのディレクトリを/ var/lib/mysqlとしてマウントします。
mount --bind /home/mysql/var/lib/mysql /var/lib/mysql