web-dev-qa-db-ja.com

MariaDBは更新後に起動できません:[警告]テストファイル/home/mysql/beta.lower-testを作成できません

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

次に何をすべきかわからない。ポインタはありますか?

14
Bento

/ homeからMariaDB SQLを実行するには、ファイル/usr/lib/systemd/system/mariadb.serviceで、次のように変更します。

ProtectHome=true

へ:

ProtectHome=false
39
Thomas

Debian 9では、両方でProtectHomeをfalseに変更する必要があります/lib/systemd/system/mariadb.serviceand/lib/systemd/system/[email protected]次に、Sudo systemctl daemon-reloadを実行します。

たぶんSudo grep -Ri "protecthome" /lib/systemd/systemこれがまだ機能しない場合、mysql関連ファイルでProtectHomeの他のインスタンスを検索します

5
Neo

Debian 8(Jessie)および9(Stretch)の更新後の同じ状況。 「apt-get upgrade」の後、コマンド

  • サービスmysql開始

サーバーは起動に失敗し、エラーをログに記録します:

[警告]テストファイルを作成できません/home/johndoe/UserDatabases/mypcname.lower-test

解決策は、ファイルを変更することです/ lib/systemd/system/mariadb.service値:

ProtectHome=true

ProtectHome=false

上記のように。

4
karel

Thomasの答えは正しいですが、数か月ごとの更新でリセットされます。だからここに恒久的な解決策があります:

systemctl edit mariadbを使用して、mariadbサービスのデフォルト設定を上書きするファイルを作成します。 (debianでは/etc/systemd/system/mariadb.service.d/override.confにあります)

Thomasがファイルで変更したのと同じ設定を設定します。

[Service]
ProtectHome=false

systemctl daemon-reloadを使用して、systemctl構成を再ロードします。

3
zuim

@RedGiantはい、私はそれを解決しました。ここに投稿するのを忘れました。

どうやら.1リリース後は/ homeからSQLを実行できなくなったようです。おそらくこれを回避する方法はありますが、見つかりません。

MySQLは/ home以外の任意の場所から実行できます。私がしたことは、/ homeをアンマウントし(SSD RAIDを/ homeにマウントしました)、ディスクを/ ssdとして再マウントしました。構成のパスを変更したところ、すぐに動作しました。

SELinuxやApparmorを実行していません。

3
Bento

これを回避するには、ホームのディレクトリを/ var/lib/mysqlとしてマウントします。

mount --bind /home/mysql/var/lib/mysql /var/lib/mysql
2
Peter Grond