web-dev-qa-db-ja.com

不明/サポートされていないストレージエンジン:InnoDB

レプリケーションサーバーをセットアップしていますが、mysqlサービスを初めて開始しようとすると、失敗します。

[root@ravioli mysql]# service mysqld start
MySQL Daemon failed to start.
Starting mysqld:                                           [FAILED]
[root@ravioli mysql]# tail /var/log/mysqld.log 
151013 13:41:27 [ERROR] Plugin 'InnoDB' init function returned error.
151013 13:41:27 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
/usr/libexec/mysqld: File '/databases/mysql/mysql_slow_queries.log' not found (Errcode: 13)
151013 13:41:27 [ERROR] Could not use /databases/mysql/mysql_slow_queries.log for logging (error 13). Turning logging off for the whole duration of the MySQL server process. To turn it on again: fix the cause, shutdown the MySQL server and restart it.
151013 13:41:27 [ERROR] Unknown/unsupported storage engine: InnoDB
151013 13:41:27 [ERROR] Aborting

151013 13:41:27 [Note] /usr/libexec/mysqld: Shutdown complete

151013 13:41:27 mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended

ユーザーmysql/databases/mysql/mysql_slow_queries.logを見て、書き込むことができることを確認しました。

次に、getenforceをチェックして、Enforcingに設定されていることを確認しました。

SELinuxでうまく動作するようにMySQLを設定するにはどうすればよいですか?

5
a coder

わかりました、これは実際には 予想よりはるかに簡単でした

デフォルトでは、SELinuxEnforcingであり、ファイルシステムへの予期しない書き込みを防ぎます。 MySQLが非標準のディレクトリに書き込んでも問題ないことをSELinuxに伝える必要がありました。ウィットに:

[root@ravioli]# semanage fcontext -a -t mysqld_db_t "/databases/mysql(/.*)?"
-bash: semanage: command not found.

Derp。 semanageをインストールするには、次を使用します。

yum install policycoreutils-python

ここで、コマンドを再度実行します。これには少し時間がかかる場合があります...

[root@ravioli]# semanage fcontext -a -t mysqld_db_t "/databases/mysql(/.*)?"

この設定ファイルを見て、SELinuxがこの新しいディレクトリ用に設定されていることを確認します。

[root@ravioli]#  grep -i mysql /etc/selinux/targeted/contexts/files/file_contexts.local

/databases/mysql(/.*)?    system_u:object_r:mysqld_db_t:s0

たとえば、専用のtmpディレクトリがどこかにある場合は、ディレクトリを追加できます。

[root@ravioli]# semanage fcontext -a -t mysqld_db_t "/databases/mysql_tmp(/.*)?"

構成を再度確認します。

[root@ravioli]# grep -i mysql /etc/selinux/targeted/contexts/files/file_contexts.local

/databases/mysql(/.*)?    system_u:object_r:mysqld_db_t:s0
/databases/mysql_tmp(/.*)?    system_u:object_r:mysqld_db_t:s0

最後に、restorecronを使用して権限を更新します

restorecon -R -v /www/databases/mysql/

そして私のセットアップでは、

restorecon -R -v /www/databases/mysql_tmp/

今発行:

service mysqld start

ベネ。

Starting mysqld:         [  OK  ]
0
a coder

必要なのは、次の2つのファイルを削除することだけでした。

ib_logfile0

そして

ib_logfile1

その後、mysqlの起動に戻ってすべてが機能しました

9
Chris J Kikoti

これで私の問題は解決しました

Sudo apt-get remove --purge mysql-server mysql-client mysql-common
Sudo apt-get autoremove
Sudo apt-get autoremove

Sudo rm /var/lib/mysql/ib_logfile0
Sudo rm /var/lib/mysql/ib_logfile1

Sudo apt-get install mysql-server
1
Anders B