現在、MySQLサーバーは一時ディレクトリとして/ tmpを使用していますが、保存に問題があるので変更したいと思います。
この記事に続いて:CentOSでMySQL tmpの場所を変更する方法私はScientific Linuxを使用していますが、一般的にCentOSはシミュレーションツールとしてうまく機能しますsudo
。
mkdir /home/mysqltmp
chmod 1777 /home/mysqltmp
nano /etc/my.cnf
Add below line under the [mysqld] section and save the file
tmpdir=/home/mysqltmp
systemctl restart mysqld
再起動に失敗しました。変更せずに古いmy.cnfを復元すると、完璧に動作します。これは、設定ファイル自体に問題があるか、権限を設定する方法に問題があることを意味し、(制限された)Linuxエクスペリエンスを考慮すると、間違いなく権限の問題です。
更新:mysqld.logを見ると、これは実際に権限の問題であるようです。
2018-05-16T00:01:05.211853Z 0 [Note] /usr/sbin/mysqld (mysqld 5.7.22) starting as process 5929 ...
2018-05-16T00:01:05.214159Z 0 [Note] InnoDB: PUNCH HOLE support available
2018-05-16T00:01:05.214186Z 0 [Note] InnoDB: Mutexes and rw_locks use GCC atomic builtins
2018-05-16T00:01:05.214191Z 0 [Note] InnoDB: Uses event mutexes
2018-05-16T00:01:05.214194Z 0 [Note] InnoDB: GCC builtin __atomic_thread_fence() is used for memory barrier
2018-05-16T00:01:05.214197Z 0 [Note] InnoDB: Compressed tables use zlib 1.2.3
2018-05-16T00:01:05.214202Z 0 [Note] InnoDB: Using Linux native AIO
2018-05-16T00:01:05.214382Z 0 [Note] InnoDB: Number of pools: 1
2018-05-16T00:01:05.214459Z 0 [Note] InnoDB: Using CPU crc32 instructions
mysqld: Can't create/write to file '/home/mysqltmp/ibAcknwl' (Errcode: 13 - Permission denied)
2018-05-16T00:01:05.214535Z 0 [ERROR] InnoDB: Unable to create temporary file; errno: 13
2018-05-16T00:01:05.214542Z 0 [ERROR] InnoDB: Plugin initialization aborted with error Generic error
2018-05-16T00:01:05.214548Z 0 [ERROR] Plugin 'InnoDB' init function returned error.
2018-05-16T00:01:05.214551Z 0 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
2018-05-16T00:01:05.214554Z 0 [ERROR] Failed to initialize builtin plugins.
2018-05-16T00:01:05.214557Z 0 [ERROR] Aborting
私が間違っていることを知っている人はいますか?
アップデート2:するselinuxの問題のようです。chown
問題は解決されておらず、監査ログにこのディレクトリのAVC拒否{書き込み}メッセージがたくさんあります。
selinuxは私に全く受け入れられません。この問題を解決する方法はありますか?
答え1
今日も同じ問題が発生しました。 「に関するGoogle検索を作成するのに十分なヒントを提供しました。selinux mysql 書き込み権限「これはすぐに私に答えを与え、読むことができます。このOracleブログ投稿から。 Oracleがリンクを削除すると、通常は発生しない結果が得られます。それただし、忍耐を持って下にスクロールしてテキストメッセージを確認してください。
ここではいくつかのヒントをお教えします。
- (root shell) コマンドを使用して selinux の状態を確認します.
getenforce
- 「と答えると実装する'に設定してみてください。寛大な'コマンドを使用してください
setenforce 0
- その後、mysqldを再起動し、正しく機能していることを確認してください。
- selinux を再び定常状態にリセットするには、コマンドを使用します。
setenforce 1
selinuxがmysqldが機能しない原因であることを証明した後は安全ではないため、selinuxを無効にすることはできません。 mysqld関連の例外をその構成に追加する方法を理解する必要があります。
このセクションでは、私が提供したリンクとSELinuxドキュメントを使って自分自身を見つけるようにします。私は専門家ではないので、私が完全に理解していない部分についてはアドバイスを提供しません。