MySQL / 短いガイド

MySQL構成の構文エラーを確認する方法

シェア

はじめに

サービスを構成する際、変更を適用する前に、影響を与える環境に対して変更を検証することが重要です。これは、MySQLデータベースのような重要なサービスへの変更に特に当てはまります。

多くの変更は意味的正確性(構成が意図した意味になっていることを確認すること)を手動でチェックする必要がありますが、多くの場合、構文的正確性(変更が予期された形式になっていることを確認すること)のチェックを自動化できます。これは限定的ではありますが、スペルミス、不適切な句読点、および新しい変更を組み込もうとしたときにサーバーが正しく起動するのを妨げる可能性のある不正な形式の構成オプションをキャッチできる非常に役立つチェックを提供します。

この短いガイドでは、組み込みオプションを使用してMySQLサーバー構成ファイルを検証する方法について説明します。これは、実行した編集がサービスを再起動するときにMySQLに干渉しないことを検証するのに役立ちます。

MySQLサーバー構成ファイルの確認

MySQLサーバーを実行するために使用される mysqld バイナリには、通常は使用しない多くのオプションが含まれています。その1つが --validate-config フラグです。

--validate-config フラグを指定すると、 mysqld バイナリは構成ファイルを解析して終了します。検証チェックを実行するには、次のように入力します。

mysqld --validate-config

問題が見つからない場合、プログラムはMySQLサーバーを起動しようとする代わりに、出力なしで正常に終了します。プロセスが正常に終了したことを確認するには、終了コードを確認します。

echo $?
0

エラーが見つかった場合、MySQLは実際​​の起動シナリオと同様にプロセスを中止し、問題が発生したファイルと行に関する情報を出力します。MySQL構成ファイルに構文エラーを追加して、このプロセスをトリガーし、出力を確認できます。たとえば、次のことができます。

echo "hello there" | sudo tee --append /etc/mysql/my.cnf

これで、構成を再度確認すると、コマンドは構成に追加した問題のある行を出力します。

mysqld: [ERROR] Found option without preceding group in config file /etc/mysql/my.cnf at line 23.
mysqld: [ERROR] Fatal error in defaults handling. Program aborted!

終了コードは、エラーが発生したことも検証します。

echo $?
1

sed を使用して、MySQL構成ファイルに追加した行を削除できます。削除が成功したことを確認するために、構成ファイルを再度検証します。

sudo sed --in-place '/hello there/d' /etc/mysql/my.cnf
mysqld --validate-config

サーバー構成ファイルは、構文的に正しいことが再度検証されました。

結論

このガイドでは、 --validate-config フラグを指定した mysqld バイナリを使用して、MySQLサーバーの構成ファイルのエラーを検証する方法について説明しました。これはすべてのエラーを検出するために使用できるわけではありませんが、タイプミス、不適切な構成文法、および無効なオプションを防ぐのに大いに役立ちます。データベースサービスを停止する前に、新しい構成が有効であることを確認するために、サーバーを再起動する前に常に --validate-config フラグを使用することをお勧めします。

著者について
Justin Ellingwood

Justin Ellingwood

Justinは、2013年からデータベース、Linux、インフラストラクチャ、および開発者ツールについて執筆しています。彼は現在、妻と2匹のウサギとベルリンに住んでいます。彼は通常、三人称で書く必要はありません。これは関係者全員にとって安心です。