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の起動#ついに始める
答え2
私は実行中のコマンドや/data/mysql
SELinuxを追加する方法に直接問題があるとは思いません。
すべてが正常に動作していることを確認するために存在することを確認し、/または手動でこの行を/etc/selinux/targeted/contexts/files/file_contexts.local
。
/data/mysql(/.*)? system_u:object_r:mysqld_db_t:s0
上記の手順を繰り返すと、file_contexts.local
期待どおりにファイルに行が追加されます。
次のRedhat関連記事で説明されているものと比較して、あなたがフォローしている手順を再確認します。10.4.1。 MySQL変更データベースの場所。
答え3
このエラーは、オペレーティングシステムの権限の問題が原因で発生します。次のコマンドを実行してください。
semanage fcontext -a -e /var/lib/mysql /opt/mysql
restorecon -R -v /opt/mysql