VMでSELinuxセキュリティコンテキストを設定した後も、MySQL権限拒否エラーが発生しました。

VMでSELinuxセキュリティコンテキストを設定した後も、MySQL権限拒否エラーが発生しました。

CentOSにMySQLをインストールしました(詳細は以下を参照)。私のOSは物理マシンではなく仮想マシンであり、ディレクトリ/data/mysqlはローカルディスク(仮想)です。仮想化環境でいくつかの追加手順を実行する必要があります。これリンクにはSELinuxと仮想化に関するいくつかの情報があります。しかし、それをMySQLに含める方法がわかりません。

MySQLはデータディレクトリの下でうまく機能しましたが、/var/lib/mysql別のディスク上の別のディレクトリに移動すると動作が停止しました。同じディスク上の他のディレクトリも有効です。 SELinuxを無効にすると、MySQLは別のディスクを使用します。 SELinuxはさまざまなドライバを制限します。次の2つのリンクで提供されたソリューションを試しました。

特に、次の2つのコマンドは次のとおりです。

$ semanage fcontext --add --type mysqld_db_t '/data/mysql(/.*)?'
$ restorecon -r /data/mysql

私が実行したとき:

$ ls -dZ /data/mysql

次のメッセージが表示されます。

drwxr-xr-x. mysql mysql unconfined_u:object_r:mysqld_db_t:SystemLow 

私はまだ次のように続けています:

/usr/sbin/mysqld:ディレクトリを '/data/mysql/'に変更できません(エラーコード:13 - 権限が拒否されました)

もっとやるべきことはありますか?

  • MySQL: EditLine ラッパーを使用する Linux (x86_64) 用 mysql Ver 14.14 Distrib 5.6.14
  • オペレーティングシステム:CentOSバージョン6.4(最終バージョン)

ベストアンサー1

SELinux や AppArmor を持たない Debian 9 やその他のシステムベースのディストリビューションでは、この問題は MySQL データディレクトリが /home の下の任意の場所に移動した場合に発生する可能性があります。

その理由は、systemdサービスファイル(/lib/systemd/system/mariadb.service)に次の設定が含まれているためです。 保護ホームページ=true。この設定はMySQLが/ homeの下のフォルダに書き込むのを防ぐので、起動時にErrNo 13:Permission Deniedエラーが発生します。

回避策は、データディレクトリを/ homeの外に移動するか、systemdサービスファイルでこのセキュリティ機能をオフにすることです。

1:sudo cp /lib/systemd/system/mariadb.service /etc/systemd/system/ #ローカルオーバーライドサービスファイル

2: 編集/etc/systemd/system/mariadb.serviceそして変化家を守る偽です(保護ホームページ=false)。文書を保存

サム:sudo systemdデーモンの再ロード#オーバーレイファイルを表示できるようにsystemdサービスを更新します。

4:sudo systemctl mysqlの起動#ついに始める

おすすめ記事