mysql 8.0の起動エラー
お世話になっております。
当方、RHEL6.5環境でZabbixサーバの構築を行っております。
Zabbixサーバインストールに必要な事前パッケージとZabbixのインストールまで完了しております。
Apache 2.2.15
PHP 5.4.45
MySQL 8.0.21
Zabbix 2.4.8
現在初期DB作成のためのMySQLは以下のコマンドでインストールしました。
yum install mysql-community-server
viで/etc/my.cnfを以下の形式に修正しております。
=================================================
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
#skip-grant-tables
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
# ログのタイムゾーンの設定(初期値:UTC)
log_timestamps=SYSTEM
# クライアントの文字セットの設定を無視する
skip-character-set-client-handshake
# デフォルトの文字セット(初期値:utf8mb4 >= 8.0.1)
character-set-server=utf8mb4
# タイムスタンプのデフォルト値に関する設定(初期値:ON >= 8.0.2)
explicit_defaults_for_timestamp=ON
# 認証プラグインの設定
default_authentication_plugin=mysql_native_password
=================================================
この状態で service mysqld start コマンドを用いてMySQLを起動しようとすると、
MySQLの起動は失敗となりました。
/var/log/mysqld.logの中身を確認したところ、以下のようなログが出ていました。
2020-07-28T20:46:09.376008+09:00 0 [System] [MY-013172] [Server] Received SHUTDOWN from user . Shutting down mysqld (Version: 8.0.21).
2020-07-28T20:46:11.328770+09:00 0 [System] [MY-010910] [Server] /usr/sbin/mysqld: Shutdown complete (mysqld 8.0.21) MySQL Community Server - GPL.
2020-07-28T20:46:11.849501+09:00 0 [System] [MY-010116] [Server] /usr/sbin/mysqld (mysqld 8.0.21) starting as process 2716
2020-07-28T20:46:11.858878+09:00 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started.
2020-07-28T20:46:12.099618+09:00 1 [System] [MY-013577] [InnoDB] InnoDB initialization has ended.
mysqld: Table 'mysql.plugin' doesn't exist
2020-07-28T20:46:12.225068+09:00 0 [ERROR] [MY-010735] [Server] Could not open the mysql.plugin table. Please perform the MySQL upgrade procedure.
2020-07-28T20:46:12.250359+09:00 0 [System] [MY-011323] [Server] X Plugin ready for connections. Bind-address: '::' port: 33060, socket: /var/run/mysqld/mysqlx.sock
2020-07-28T20:46:12.287974+09:00 0 [Warning] [MY-010015] [Repl] Gtid table is not ready to be used. Table 'mysql.gtid_executed' cannot be opened.
2020-07-28T20:46:12.315382+09:00 0 [Warning] [MY-010015] [Repl] Gtid table is not ready to be used. Table 'mysql.gtid_executed' cannot be opened.
2020-07-28T20:46:12.323993+09:00 0 [Warning] [MY-010068] [Server] CA certificate ca.pem is self signed.
2020-07-28T20:46:12.324256+09:00 0 [System] [MY-013602] [Server] Channel mysql_main configured to support TLS. Encrypted connections are now supported for this channel.
2020-07-28T20:46:12.327692+09:00 0 [Warning] [MY-010441] [Server] Failed to open optimizer cost constant tables
2020-07-28T20:46:12.328136+09:00 0 [ERROR] [MY-013129] [Server] A message intended for a client cannot be sent there as no client-session is attached. Therefore, we're sending the information to the error-log instead: MY-001146 - Table 'mysql.component' doesn't exist
2020-07-28T20:46:12.328417+09:00 0 [Warning] [MY-013129] [Server] A message intended for a client cannot be sent there as no client-session is attached. Therefore, we're sending the information to the error-log instead: MY-003543 - The mysql.component table is missing or has an incorrect definition.
2020-07-28T20:46:12.329221+09:00 0 [ERROR] [MY-010326] [Server] Fatal error: Can't open and lock privilege tables: Table 'mysql.user' doesn't exist
2020-07-28T20:46:12.329530+09:00 0 [ERROR] [MY-010952] [Server] The privilege system failed to initialize correctly. For complete instructions on how to upgrade MySQL to a new version please see the 'Upgrading MySQL' section from the MySQL manual.
2020-07-28T20:46:12.330068+09:00 0 [ERROR] [MY-010119] [Server] Aborting
2020-07-28T20:46:13.756919+09:00 0 [System] [MY-010910] [Server] /usr/sbin/mysqld: Shutdown complete (mysqld 8.0.21) MySQL Community Server - GPL.
エラーメッセージについて調査を行うと、「mysql_upgrade」コマンドを行うという記載を複数のサイトで見つけたので、
セーブモードでmySQLを起動しmysqlユーザに切り替えて実行したのですが、「このコマンドは推奨されていません」といったメッセージが出てしまい
解決には至っていません。
何が原因かご教授頂けると幸いです。
足りない情報などがありましたら、追記させていただきます。
TNK - 投稿数: 4671
Zabbixの問題ではないので、MySQLのコミュニティ等でお聞きにな
られる方が良いと思います。
例えば、以前別のバージョンのMySQLをインストールしていて、そ
のデータディレクトリをそのままMySQL 8.0で使用しようとしてい
ませんか?
使用していたバージョンによっては、一気に8.0へのバージョンア
ップができない場合があったと思います。
新規に環境を構築するのであれば、データ用のディレクトリを新規
に作成し直した方が良いのではないでしょうか。
あと、Zabbixに関することで気になる点を書かせて頂きます。
使用しようとされているZabbixのバージョンがわからないのですが、
Zabbix 5.0では、PHP 7.2以降が必要になります。
RHEL 6では、curlや暗号化のライブラリのバージョンが古いので、
Zabbixの機能にも制限がでてくることをご認識ください。
あと、Zabbixの場合、文字コードと照合順序はutf8とutf8_binであ
ることが必要となりますので、現時点で古いバージョンで今後バー
ジョンアップを考慮されている場合は、文字コードにもご注意くだ
さい。
dai_1 - 投稿数: 10
返答頂きありがとうございます。
そうですね、以前に同様の形式の質問があったためこちらで一度確認させていただきましたが、
Zabbixとは直接関係のない問題でした、すいません。
今回は新規で構築を行うので、データ用のディレクトリを新規に作成し直す方法を確認してみます。
>あと、Zabbixに関することで気になる点を書かせて頂きます。
>使用しようとされているZabbixのバージョンがわからないのですが、
>Zabbix 5.0では、PHP 7.2以降が必要になります。
すいません、わかりにくいですがZabbixのバージョンは2.4.8と記載しております。
>RHEL 6では、curlや暗号化のライブラリのバージョンが古いので、
>Zabbixの機能にも制限がでてくることをご認識ください。
今回のサーバはRHEL 6でphp54パッケージをいれてPHP 5.4を動かしておりますが、
この場合ですと、このZabbixの機能の制限については問題無いでしょうか。
>あと、Zabbixの場合、文字コードと照合順序はutf8とutf8_binであることが必要となりますので、
>現時点で古いバージョンで今後バージョンアップを考慮されている場合は、文字コードにもご注意ください。
MySQLの設定ができるようになったらテーブルの DEFAULT CHARSET=utf8;の部分を、
DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
の形に修正するという事で認識はあっておりますでしょうか。
TNK - 投稿数: 4671
失礼しました。見逃してしまっていたようです。
Zabbix 2.4は、4年以上前にサポートが終了してしますので、継続
して使用されることは強くお勧めしません。
脆弱性の問題や不具合があると思われますので、速やかに新しいバ
ージョンを使用することを検討してください。
Web監視で暗号化を必要とするような監視ができないなどの制限が
あったと思います。
文字コードの設定に関しては認識は合っています。
しかし、それ以前に、Zabbix 2.4はMySQL 8.0に対応していません。
MySQL 8.0を使用するのであれば、Zabbix 4.0以降が必要です。
MySQL 8.0のバージョンアップ時に、MySQL自体が使用する予約語が
追加されたため、Zabbix 4.0よりも前のバージョンでは、テーブル
名等が予約語とぶつかってしまうので、Zabbix用のデータベースを
構築できません。
ご注意ください。
dai_1 - 投稿数: 10
回答頂きありがとうございます。
>Zabbix 2.4は、4年以上前にサポートが終了してしますので、継続して使用されることは強くお勧めしません。
>脆弱性の問題や不具合があると思われますので、速やかに新しいバージョンを使用することを検討してください。
>MySQL 8.0を使用するのであれば、Zabbix 4.0以降が必要です。MySQL 8.0のバージョンアップ時に、MySQL自体が使用する予約語が
>追加されたため、Zabbix 4.0よりも前のバージョンでは、テーブル名等が予約語とぶつかってしまうので、Zabbix用のデータベースを
>構築できません。ご注意ください。
RHEL6用のZabbix Serverを入れられる最新のrpmがあったのがZabbix2.4までだったので最初Zabbix2.4をインストールしましたが、
サポートが終了されているとの事であれば2.4より上のバージョンを使うように致します。
五月雨になってしまい申し訳ありませんが、「MySQL 8.0を使用するのであれば、Zabbix 4.0以降が必要です。」との事なので
Zabbix 4.0までバージョンアップさせるのが好ましいと思うのですが、
RHEL6に入れたZabbixをZabbix 4.0までバージョンアップさせることは可能でしょうか。
あるいはMySQLも一つ下のバージョンにダウングレードするなどして、Zabbix 3.4を入れる方が好ましいのでしょうか。
TNK - 投稿数: 4671
RHEL 6は、Zabbixのバージョンが新しいと、メール送信の機能で認
証が必要なメールサーバーを使用できないという問題がでてきます
し、Zabbix 5.0ならさらにPHP 7.2以降が必要など制限があります。
今年の11月にはRHEL 6のサポートも終了することになっていたと思
いますので、RHEL 6を使い続けることも再考した方が良いのではな
いでしょうか。
また、Zabbix 3.0以降、RHEL 6はZabbixサーバー用としては使用が
推奨されていないため、簡単にインストールできるZabbixの公式パ
ッケージも存在しません。
一部のバージョンはあることはあるのですが、機能制限があります
し、環境構築手順が複雑になるのでお勧めしません。
# 私自身できちんと稼働できるかまで再確認していません
これからインストールするのであれば、最初から4.0などの新しい
バージョンをインストールすることをお勧めします。
以前のバージョンからバージョンアップすることはできますが、よ
り新しいバージョンの方が監視用のテンプレートが改善されていた
りするので、新しい機能を生かした効率の良い監視設定を行うため
の参考になると思います。
MySQLに関しては、コミュニティ版を使用する時点で、MySQLに関す
るRed Hatのサポートを放棄されるわけですから、ご自身で運用で
きるバージョンで、MySQL自体のサポート期間も考慮して選択すれ
ばよいでしょう。(現時点なら5.7か8.0のどちらかでは?)
Red Hatのサポートを生かすのであれば、Red Hatが提供しているパ
ッケージを使用すべきです。
# PHPも同様
Zabbix 3.4の選択は論外です。
2.4と同様に、2年以上前にサポートが終了しています。
サポート期間の長いLTSと呼ばれるバージョンを選択された方が良
いでしょう。
Zabbixのサポート期間に関しては、以下のURLをご参照ください。
https://www.zabbix.com/jp/life_cycle_and_release_policy
RHEL系ならば、RHEL 8とZabbix 4.0もしくはZabbix 5.0の組み合わ
せが良いと私は思います。
dai_1 - 投稿数: 10
TNKさん、返答が遅れて申し訳ありません。
Zabbixとは直接関係のない部分であるにも関わらず
色々とご教示頂きありがとうございます。
大変助かりました。