Mysqlは/ tmpに書き込むことができず、再起動に失敗しました


11

orthomcl使用するプログラムを実行していましたmysql。このプログラムは、以前同じコンピューターで正常に動作しました。今回はエラーメッセージがありました。

DBD::mysql::st execute failed: Can't create/write to file '/tmp/#sql_700_1.MYI' (Errcode: 13) at /usr/local/bioinf/orthomclSoftware-v2.0.9/bin/orthomclPairs line 709, <F> line 14.

mysqlサーバーを再起動しようとしましたが、サーバーはシャットオフされましたが、起動に失敗しました。

sudo service mysql start
start: Job failed to start

/var/log/mysql/error.logそして/var/log/mysql.err空です。でのパージと再インストールmysql-server、削除など、ここで見つけたいくつかのことを試しましib_logfile*/var/lib/mysql

私が試した他のことは

sudo dpkg-reconfigure mysql-server-5.5

エラーメッセージは次のとおりです。

/usr/sbin/mysqld: Can't create/write to file '/tmp/ibNzqwO0' (Errcode: 13)
InnoDB: Error: unable to create temporary file; errno: 13
[ERROR] Plugin 'InnoDB' init function returned error.
[ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
[ERROR] Unknown/unsupported storage engine: InnoDB
[ERROR] Aborting

以下にいくつかの情報を示しdmesg | grep mysqlます。

[3115187.338273] init: mysql main process (44255) terminated with status 1
[3115187.338417] init: mysql main process ended, respawning
[3115187.356361] init: mysql post-start process (44256) terminated with status 1
[3116827.473256] type=1400 audit(1396394069.224:132): apparmor="DENIED" operation="open" parent=45387 profile="/usr/sbin/mysqld" name="/home/tmp/" pid=45396 comm="mysqld" requested_mask="r" denied_mask="r" fsuid=0 ouid=0
[3116827.582489] type=1400 audit(1396394069.332:133): apparmor="DENIED" operation="mknod" parent=45387 profile="/usr/sbin/mysqld" name="/home/tmp/#sql_b154_0.MYI" pid=45402 comm="mysqld" requested_mask="c" denied_mask="c" fsuid=0 ouid=0
[3116827.908448] type=1400 audit(1396394069.660:134): apparmor="DENIED" operation="mknod" parent=45317 profile="/usr/sbin/mysqld" name="/home/tmp/ibbPfaqP" pid=45415 comm="mysqld" requested_mask="c" denied_mask="c" fsuid=118 ouid=118
[3116841.623608] type=1400 audit(1396394083.372:139): apparmor="STATUS" operation="profile_replace" name="/usr/sbin/mysqld" pid=45443 comm="apparmor_parser"
[3116841.771621] init: mysql pre-start process (45474) terminated with status 1

このような多くの行がありました。

私のMySQLサーバーの何が問題なのか、誰か助けてくれませんか?

どうもありがとう。

回答:


15

これは、あなた/tmpが別の場所にシンボリックリンクされているためです/home/tmp。しかし、MySQLはAppArmorによって装甲されてい/home/tmpます。状況を改善するには、を編集して適切に/etc/apparmor.d/abstractions/user-tmp追加し/home/tmpます。私のために余分な行

  owner /home/tmp/**    rwkl,
  /home/tmp/            rw,

トリックをしました。


1
パーフェクト!問題をすぐに解決しました。シンボリックリンクと関係があると確信しました!
ヨノラン

1
私は、変更を有効にするためのAppArmorを再起動する必要がありました:sudo /etc/init.d/apparmor restart
Nadjibまみ

6

には適切な権限がないよう/tmpです。このコマンドで修正できるはずです:

sudo chmod 1777 /tmp

これにより、アクセス権が777(全員のrwx)に設定され、/tmpdirに推奨されるスティッキービットも設定されます。で説明されているようにman chmod

制限付き削除フラグまたはスティッキービット

制限付き削除フラグまたはスティッキービットは単一ビットであり、その解釈はファイルタイプによって異なります。ディレクトリの場合、非特権ユーザーがファイルまたはディレクトリを所有していない限り、ディレクトリ内のファイルを削除または名前変更することを防ぎます。これは、ディレクトリの制限付き削除フラグと呼ばれ、一般的に/ tmpなどの書き込み可能なディレクトリにあります。一部の古いシステムの通常のファイルの場合、このビットはプログラムのテキスト画像をスワップデバイスに保存するため、実行時により速くロードされます。これはスティッキービットと呼ばれます。


@ScottSeveranceは、変更のためだけにコードを引用符に変更しないでください。はい、引用していることは知っていますが、コードブロックの方が書式設定が優れており、ヘッダーとインデントを尊重しています。編集した方法は、すべてが同じ行にあります。
テルドン14

1
コードとしてフォーマットされている場合、一定の水平スクロールなしでは携帯電話で読み取れないため、変更しました。引用符をコードとしてフォーマットすることは、実際には利点がありません。見出しが同じ行にあるのが気に入らない場合は、電話でのユーザーの表示を壊さずに修正する方法があります。
スコットセヴェランス14

@ScottSeveranceああ、結構、電話で問題が発生することに気付いていませんでした。OK、それを引用ブロックに入れます。あなたの編集(説明なし)は通常のブラウザでは悪く見え、正しく表示されることを確認しなかったので、私はただいらいらしました。もう一度編集したところ、完璧です、ありがとう!
テルドン14

1
私が正しい解決策です。Mysqlは装甲されており、装甲はconf /tmpを変更せずに別の場所に移動することを好みません。監査は、それがファイルシステムで拒否された許可の問題ではなく、防具が警備していることを示しています。
アンティハパラ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.