[最も人気のある]オープンソースのリレーショナルデータベース管理システムです。最新のパッケージマネージャーはMySQLを起動して実行する際の摩擦をある程度軽減しましたが、インストール後に実行する必要のある設定がまだいくつかあります。余分な時間を費やす最も重要な側面の1つはセキュリティです。デフォルトでは、MySQLはローカル接続、またはMySQLがインストールされているのと同じマシンから発信された接続のみを受け入れるように設定されています。MySQLデータベースにリモートの場所からアクセスする必要がある場合は、安全にアクセスすることが重要です。TLS暗号化によるリモート接続を受け入れる方法を示します。前提条件このガイドを完了するには、次のものが必要です。これらのサーバーの1つをMySQLサーバーとして使用し、もう1つをクライアントマシンとして使用します。+`でファイアウォールを有効にします。18.04初期サーバー設定ガイドに従って、両方のサーバーを適切な初期状態にします。マシンの1つ*で、MySQLサーバーをインストールして構成します。MySQLユーザーを構成してください。3]、これはTCPではなくTCPを使用してMySQLに接続するために必要であるためローカルUnixソケット。MySQLサーバー*と呼ばれ、このマシンで実行する必要があるコマンドは次のように青色の背景で表示されることに注意してください。MySQLクライアント*と呼び、そのマシンで実行する必要のあるコマンドは赤の背景で表示されます。混乱を避けるために、このチュートリアルに沿って従うときにこれらを念頭に置いてください。TLSステータスを確認できます。MySQLユーザーとしてMySQLセッションを開始します。`オプションが含まれています。」オプションも含まれています。*としても知られているIPv4ループバックインターフェイスをポイントします。これにより、クライアントはローカルソケットファイルを使用する代わりにhttps://en.wikipedia.org/wiki/Transmission_Control_Protocol[TCP]で接続するように強制されます。file]を介して接続を試みます。これらの接続はローカルでのみ行うことができ、TCP接続が実行する必要のあるすべてのチェックとルーティング操作を実行する必要がないため、これは一般に高速で安全です。TCPで接続すると、接続のSSLステータスを確認できます。*パスワードの入力を求められます。入力すると、インタラクティブなMySQLセッションにドロップされます。TLS変数の状態を表示します。+`としてマークされています。これは、SSL機能がサーバーにコンパイルされているが、まだ有効になっていないことを意味します。これを確認するには、現在の接続のステータスを確認します。0.013--------------上記の出力が示すように、TCP経由で接続している場合でも、この接続にはSSLは現在使用されていません。終了したら、現在のMySQLセッションを閉じます。exitMySQLサーバーがSSLを使用していないことを確認したので、次のステップに進み、いくつかの証明書とキーを生成してSSLを有効にするプロセスを開始します。これらにより、サーバーとクライアントは互いに安全に通信できます。TLS証明書とキーの生成MySQLへのSSL接続を有効にするには、最初に適切な証明書とキーファイルを生成する必要があります。+`というユーティリティを提供します。[前提条件のMySQLチュートリアル]に従ってインストールしたMySQLのバージョンにはこのユーティリティが含まれているため、ここで使用して、必要なファイルを生成します。--uid=mysqlこれにより、次のような出力が生成されます。+`にあるMySQLのデータディレクトリに保存されます。次のように入力して、生成されたファイルを確認します。/var/lib/mysql/これらのファイルは、認証局(「ca」で始まる)、MySQLサーバープロセス(「server」で始まる)、およびMySQLクライアント(「client」で始まる)のキーと証明書のペアです。+」ファイルを使用します。必要な証明書とキーファイルが用意できたので、MySQLインスタンスでSSLの使用を引き続き有効にします。手順3-MySQLサーバーでSSL接続を有効にするMySQLの最新バージョンは、サーバーが起動するたびにMySQLデータディレクトリ内で適切な証明書ファイルを探します。このため、SSLを有効にするためにMySQLの構成を変更する必要はありません。代わりに、MySQLサービスを再起動してSSLを有効にします。mysql再起動後、以前と同じコマンドを使用して新しいMySQLセッションを開きます。サーバーがサポートしている場合、MySQLクライアントはSSLを使用して自動的に接続を試みます。127.0.0.1前回リクエストしたのと同じ情報をもう一度見てみましょう。SSL関連の変数の値を確認します。+`を読み取るようになりました。+`変数には、生成したばかりの各ファイルの名前が入力されています。次に、接続の詳細をもう一度確認します。.--------------今回は、接続を保護するためにSSLが使用されていることを示す特定のSSL暗号が表示されます。終了してシェルに戻ります。exitサーバーは暗号化を使用できるようになりましたが、リモートアクセスを許可し、安全な接続の使用を義務付けるには、追加の構成が必要です。手順4-リモートクライアントのセキュリティで保護された接続の構成MySQLサーバーでSSLを有効にしたので、安全なリモートアクセスの設定を開始できます。これを行うには、リモート接続がSSL経由で行われるようにMySQLサーバーを設定し、パブリックインターフェイスでリッスンするようにMySQLをバインドし、システムのファイアウォールルールを調整して外部接続を許可します現在、MySQLサーバーはクライアントからのSSL接続を受け入れるように構成されています。クライアントから要求された場合、暗号化されていない接続は引き続き許可されます。+`オプションをオンにすることでこれを変更できます。これには、SSLまたはローカルUnixソケットのいずれかですべての接続を確立する必要があります。Unixソケットはサーバー自体からのみアクセスできるため、リモートユーザーが利用できる接続オプションはSSLのみです。この設定を有効にするには、好みのテキストエディターでMySQL構成ファイルを開きます。+`ディレクティブがあります。これらの行の下に独自の構成を追加して、これらの追加の構成ファイルにある競合する設定を上書きする必要があります。`セクションを作成することから始めます。これにより、MySQLは強制的に安全な接続のみを許可します。*を表すループバックIPアドレス)からの接続のみをリッスンするように構成されています。これは、MySQLサーバーがインストールされているマシンからの接続のみをリッスンするようにMySQLが構成されていることを意味します。IPアドレスで接続をリッスンするように設定する必要があります。」設定を追加して、すべてのIPアドレスを表すワイルドカードIPアドレスである「+0.0.0.0」をポイントすることができます。基本的に、これによりMySQLはすべてのインターフェイスで接続をリッスンします。ONこれらの行を追加したら、ファイルを保存して閉じます。+」の順に押すと編集できます。次に、MySQLを再起動して新しい設定を適用します。mysql次のように入力して、MySQLが「127.0.0.1」ではなく「0.0.0.0」でリッスンしていることを確認します。-pluntこのコマンドの出力は次のようになります。+`は、MySQLが利用可能なすべてのインターフェースで接続をリッスンしていることを示しています。次に、サーバーのファイアウォールを介したMySQL接続を許可します。+」ルールに例外を追加します。(v6)これにより、リモート接続の試行がMySQLサーバーに到達できるようになりました。現在のところ、リモートマシンから接続できるユーザーは設定されていません。次のステップで、クライアントマシンから接続できるMySQLユーザーを作成して構成します。ステップ5-専用のMySQLユーザーの作成この時点で、MySQLサーバーはリモートクライアントマシンからの接続試行を拒否します。これは、既存のMySQLユーザーがすべてMySQLサーバーからローカルに接続するようにのみ構成されているためです。これを解決するには、クライアントマシンからのみ接続できる専用ユーザーを作成します。*ユーザーとしてMySQLに再度ログインします。USER`コマンドで新しいリモートユーザーを作成します。ユーザー仕様のホスト部分でクライアントマシンのIPアドレスを指定して、そのマシンへの接続を制限し、「+」を選択した安全なパスワードに置き換えてください。+`句を含めることでこのユーザーにSSLが必要であることを指定します。SSL;次に、アクセスする必要があるデータベースまたはテーブルに対して、新しいユーザーのアクセス許可を付与します。example;次に、このデータベースとそのすべてのテーブルへの新しいユーザーアクセスを許可します。''@'';次に、特権をフラッシュして、これらの設定をすぐに適用します。PRIVILEGES;終了したら、終了してシェルに戻ります。exitこれで、MySQLサーバーがリモートユーザーからの接続を許可するように設定されました。+`パッケージをインストールする必要があります。@次に、クライアントマシンのパッケージインデックスを更新します。ENTER`を押してインストールを確認します。APTがパッケージのインストールを完了したら、次のコマンドを実行して、サーバーに正常に接続できるかどうかをテストします。+`オプションが含まれています。-hパスワードを送信すると、リモートサーバーにログインします。+」を使用してサーバーのステータスを確認し、接続が安全であることを確認します。.--------------終了してシェルに戻ります。exitSSL経由でMySQLに接続できることを確認しました。MySQLサーバーが安全でない接続を拒否していることをまだ確認していません。--ssl-mode=disabledプロンプトが表示されたらパスワードを入力した後、接続は拒否されます。YES)これは、暗号化されていない接続が拒否されている間にSSL接続が許可されていることを示しています。この時点で、MySQLサーバーは安全なリモート接続を受け入れるように構成されています。これがセキュリティ要件を満たしている場合はここで停止できますが、2つのサーバー間のセキュリティと信頼性を強化するために追加できる部分がいくつかあります。現在、MySQLサーバーは、ローカルで生成された認証局(CA)によって署名されたSSL証明書で構成されています。サーバーの証明書とキーのペアは、着信接続を暗号化するのに十分です。認証局が提供できる信頼関係をまだ完全に活用しているわけではありません。CA証明書とクライアント証明書およびキーをクライアントに配布することにより、両者は証明書が相互に信頼できる認証局によって署名されたことを証明できます。これにより、悪意のあるサーバーからのなりすまし接続を防ぐことができます。この追加のオプションのセーフガードを実装するために、適切なSSLファイルをクライアントマシンに転送し、クライアント構成ファイルを作成し、リモートMySQLユーザーを変更して信頼できる証明書を要求します。MySQLクライアント*にディレクトリを作成します。~/client-ssl証明書キーは機密性が高いため、現在のユーザーのみがアクセスできるように、このディレクトリへのアクセスをロックダウンします。~/client-sslMySQLサーバー*で、次を入力してCA証明書の内容を表示します。`行を含む出力全体をクリップボードにコピーします。MySQLクライアント*で、新しいディレクトリ内に同じ名前のファイルを作成します。~/client-ssl/ca.pem内部に、コピーした証明書の内容をクリップボードから貼り付けます。完了したら、ファイルを保存して閉じます。MySQLサーバー*でクライアント証明書を表示します。CERTIFICATE-----ファイルの内容をクリップボードにコピーします。繰り返しますが、最初と最後の行を含めることを忘れないでください。~/client-ssl/client-cert.pemクリップボードから内容を貼り付けます。ファイルを保存して閉じます。MySQLサーバー*上のクライアントキーファイルの内容を表示します。KEY-----最初と最後の行を含む表示された内容をクリップボードにコピーします。~/client-ssl/client-key.pemクリップボードから内容を貼り付けます。ファイルを保存して閉じます。これで、クライアントマシンには、MySQLサーバーにアクセスするために必要なすべての資格情報があります。MySQLサーバーはクライアント接続に信頼できる証明書を要求するように設定されていません。*アカウントに再度ログインします。-pここから、リモートユーザーのセキュリティ要件を変更します。+`句によって提供されるすべてのセキュリティを意味しますが、MySQLサーバーが信頼する認証局によって署名された証明書を接続クライアントに提示することをさらに必要とします。X509;次に、変更をフラッシュして、すぐに適用されるようにします。PRIVILEGES;終了したら、終了してシェルに戻ります。exitその後、接続時に両方の当事者を検証できるかどうかを確認します。MySQLクライアント*で、最初にクライアント証明書を提供せずに接続を試みます。YES)予想どおり、クライアント証明書が提示されない場合、サーバーは接続を拒否します。--ssl-key=~/client-ssl/client-key.pemクライアントに適切な証明書とキーを提供したため、この試行は成功します。ログアウトして、シェルセッションへのアクセスを回復します。exitサーバーへのアクセスを確認したので、接続するたびに証明書ファイルを指定する必要を避けるために、使いやすさを少し改善します。+`という隠し設定ファイルを作成します。」というセクションを作成します。ssl-key」オプションを追加し、サーバーからコピーしたそれぞれのファイルをポイントします。これは次のようになります。+`オプションは、MySQLサーバーによって提示された証明書が、指定した認証局によって署名されていることを確認するようにクライアントに指示します。これにより、クライアントは信頼されたMySQLサーバーに接続していることを信頼できます。ssl-key`オプションは、同じ認証局によって署名された証明書があることをMySQLサーバーに証明するために必要なファイルを指します。クライアントがCAによっても信頼されていることをMySQLサーバーに確認させる場合、これが必要になります。完了したら、ファイルを保存して閉じます。-h接続をネゴシエートするときに、クライアントとサーバーはそれぞれ証明書を提示します。各パーティは、ローカルにあるCA証明書に対してリモート証明書を検証するように構成されています。結論これで、MySQLサーバーはリモートクライアントからの安全な接続を要求するように構成されました。認証局を使用して接続を検証する手順に従った場合、リモートパーティーが正当であるという両側の信頼レベルが確立されます。