MySQLへのリモート接続を許可する方法


MySQLデータベース を使用している場合は、データベースを安全に保つために直面​​する課題をすでに認識しています。 SQLインジェクションを使用したデータベースハッキングの試みからブルートフォース攻撃まで、特にデータベースをリモートで操作している場合は、データを安全に保つことは困難です。

リモート接続を許可するようにSQLサーバーを構成する方法があります。ただし、MySQLサーバーでリモート接続を許可すると、データベースがハッカーの標的になりやすいため、注意が必要です。 MySQLデータベースへの安全なリモート接続を許可する場合は、次のことを知っておく必要があります。

目次
<!-目次->

    あなたの前に開始

    MySQLデータベースに変更を加える前に、特に本番サーバー(サーバー)で作業している場合は、データベースをバックアップすることが重要です。積極的に使用中)。データベースまたはデータベースをホストしているサーバーに変更を加えると、問題が発生した場合に重大なデータ損失が発生する可能性があります。

    サーバーの接続を変更すると、後でデータベースにアクセスできなくなる場合があります。これが発生した場合は、さらにサポートを受けるためにサーバー管理者に相談する必要がある場合があります。ローカルで実行されているMySQLサーバーで変更を試して、リモートで試す前に変更が機能するかどうかを確認することをお勧めします。

    リモートサーバーに変更を加える場合は、接続して変更を加えるための安全な方法が必要です。 SSH(Secure Shell)は、リモートサーバーに接続できるため、これを行うための最良の方法であることがよくあります。 SSHを使用して、ラズベリーパイでホスト などのローカルネットワーク上のサーバーに接続することもできます。

    このガイドでは、次の手順について説明します。リモート接続を許可するようにMySQLを構成しますが、最初にMySQLサーバーをホストしているサーバーに直接またはリモートアクセスできるようにする必要があります。

    SSH経由でサーバーにリモートアクセスできないとします(たとえば)。その場合、ルートmySQLアカウントがすでにリモート接続を許可していない限り、リモート接続を直接許可するようにMySQLデータベースを構成することはできません。したがって、先に進む前に、まずこの接続を確立する必要があります。

    MySQL構成ファイルの編集

    リモートを許可するようにMySQLを構成する最初のステップ接続は、MySQL構成ファイルを編集することです。この段階までに、このガイドでは、mySQLデータベースをリモートでホストしているサーバー、PC、またはMacにすでに接続しており、コンソールにアクセスできることを前提としています。

    または、MacまたはLinuxのオープンターミナルまたはWindowsのテキストエディタを使用してローカルMySQLサーバーを構成できます。

    1. 開始するには、お好みのコンソールテキストエディタを使用します。 MySQLデータベースファイルを編集します。 Linuxでは、ターミナルまたはSSHウィンドウにsudo nano /etc/mysql/mysql.conf.d/mysqld.cnfと入力して、nanoエディターを使用してこのファイルを編集します( MySQLデータベースはデフォルトの場所にあります)
      1. Windowsを実行している場合は、ファイルエクスプローラーを開き、MySQLインストールを含むフォルダーにアクセスします(例:C:/ Program Files / MySQL / MySQL Server 8.0)。エントリをダブルクリックして、デフォルトのテキストエディタ(メモ帳など)を使用してmy.iniファイルを開きます。そこにない場合は、最初にファイルを作成します
        1. Macの場合は、ターミナルウィンドウを開きます。 sudo nano / usr / local / etc / my.cnfと入力します。これは、MySQL 自作を使用して をインストールした場合のMySQLのデフォルトの構成ファイルです。
        2. 上記の場所がデフォルトの場所ですMySQL構成ファイルの場合。これらのコマンドが機能しない場合は、関連するファイル(my.cnfmysqld.cnf、またはmy.ini)手動で関連するファイルパスを見つけます。

          安全なバインドアドレスIP範囲の設定

        3. 一度サーバーのMySQL構成ファイルを開いたら、キーボードの矢印キーを使用して、ファイルのbind-addressセクションにアクセスします。このIP範囲は、データベースへの接続を制限します。これは通常、127.0.0.1を使用するローカルマシンまたはサーバーからの接続のみを許可するように設定されています。
          1. 現在のインターネット接続を使用するデバイスからの接続を許可するようにMySQLデータベースを構成する場合は、最初にパブリックIPアドレスを見つける してから、127.0.0.1を置き換えます。そのIPアドレス。または、接続を許可するデバイスまたはサーバーのIPアドレスに置き換えます。
            1. 状況によっては、MySQLデータベースへのすべてのリモート接続を許可することをお勧めします。これには極端なリスクが伴うため、本番サーバーでは使用しないでください。ただし、これを許可する場合は、127.0.0.10.0.0.0に置き換えます。
              1. 基本設定セクションのポートの値をメモします。これは次のセクションで必要になります。表示されていない場合は、デフォルト値であるポート3306が使用されます。新しい行にport = xxxxと入力し、xxxxを適切なポート値に置き換えることで、独自のポートを追加できます。
                1. MySQL構成ファイルでバインドアドレスを構成したら、ファイルを保存します。 Linuxを使用している場合は、Ctrl + OCtrl + Xを選択してこれを行います。 Macでは、Command + OCommand + Xを選択します。 Windowsユーザーは、ファイル>保存を選択して保存できます。
                  1. 次に、LinuxおよびMacユーザーは、mysql.server stop && mysql.server startまたはmysql.server restartと入力して、MySQLを再起動できます。コマンドsudoを使用する を昇格させ(例:sudo mysql.server restart)、mysql.serverファイルへの適切なパスを使用する必要がある場合があります(例:/ usr /local/bin/mysql.server)。
                  1. 上記のコマンドが機能しない場合は、代わりにsudo service mysql restartを試してください。
                    1. WindowsでMySQLを再起動するには、[スタート]メニューを右クリックし、[Windows PowerShell(管理者)]を選択して新しいPowerShellウィンドウを開きます。 PowerShellウィンドウで、net stop mysql80に続けてnet start mysql80と入力し、mysql80をPC上の正しいサービス名に置き換えます。
                    2. Windowsで正しいサービス名がわからない場合は、net startと入力して検索します。構成を再読み込みできない場合は、サーバーを再起動し、代わりに手動で(必要に応じて)MySQLを再読み込みします。

                      ファイアウォールの構成

                      この段階では、 MySQLデータベースは、MySQL構成ファイルでbind-address値として設定したIPアドレスを使用するデバイスからのリモート接続を許可する必要があります(または、この値を0.0.0.0に設定した場合はすべてのデバイスからのリモート接続を許可する必要があります)代わりに)。ただし、接続は引き続きデバイスまたはネットワークファイアウォールによってブロックされます。

                      特定のポートへのアクセスが許可されていない限り、ほとんどのサーバーとPCはファイアウォールを使用して接続をブロックします。これを構成する手順は、WindowsとLinuxのどちらでMySQLを実行しているかによって異なります。 Macファイアウォールはデフォルトで無効になっているため、ここで追加の手順を実行する必要はありません。

                      Linuxファイアウォールの構成

                      多くのLinuxサーバーはiptablesをデフォルトのファイアウォールユーティリティとして使用します。以下の手順に従って構成できます。

                      1. ターミナルまたはSSH接続を開き、sudo iptables -A INPUT -p tcp -s XXXX –dport YYYY -j ACCEPTXXXXをMySQL接続をから許可するデバイスのIPアドレスに置き換え、YYYYをMySQL構成の一致するポート値に置き換えますファイル(例:3306)。
                        1. これにより、ファイアウォールが一時的に構成されます。 DebianまたはUbuntuベースのLinuxサーバーを使用している場合は、ターミナルまたはSSHにsudo netfilter-persistent saveおよびsudo netfilter-persistent reloadと入力して、この変更を永続的にします。ウィンドウ。
                        2. iptablesがLinuxディストリビューションのデフォルトのファイアウォールツールでない場合、詳細についてはディストリビューションのユーザーマニュアルを参照する必要があります。特定のパッケージ(netfilter-persistentなど)が利用できない場合は、ディストリビューションのソフトウェアリポジトリツールを使用してインストールします(例:sudo apt install netfilter-persistent)。

                          Windowsファイアウォールの構成

                          Windows PCまたはサーバーを使用してデータベースをホストしている場合は、次の手順を使用してファイアウォールを構成できます。

                          1. [スタート]メニューを右クリックして、[実行]を選択します。
                            1. [実行]ボックスにwf.mscと入力し、[OK
                              1. Windows Defenderウィンドウで、インバウンドルール<を選択します。 / strong >>新しいルール
                                1. 新しいインバウンドルールウィザード内ウィンドウで、ポート>次へを選択します。
                                  1. 次のメニューで、オプションからTCPを選択し、3306(またはMySQL構成ファイルにリストされているポート値)と入力して、次へ<を選択します。 / strong>。
                                    1. アクションメニューで、デフォルトのオプションをのままにします>接続を許可してから、次へを選択します。
                                      1. 確認しますルールをすべてのネットワークタイプに適用する場合は、[次へ]を選択します。
                                        1. 提供されたポートにルールのわかりやすい名前(MySQLなど)を入力します、[完了]を選択してファイアウォールルールのリストに追加します。
                                        2. 接続に問題がある場合は、上記の手順を繰り返します。 、同じ詳細(ポート3306など)を使用して、ファイアウォール設定で新しいアウトバウンドルールを作成してください。データベースへのインバウンド接続とアウトバウンド接続を許可するために、ローカルネットワークルーターを必要なブロックされたポートを開きます に構成する必要がある場合もあります。

                                          MySQLを使用したリモートサーバーへの接続

                                          リモート接続を許可するようにMySQLデータベースを構成した後、実際にデータベースへの接続を確立する必要があります。これは、ターミナルまたはPowerShellウィンドウからmysqlコマンド(Windowsではmysql.exe)を使用して実行できます。

                                          Windowsを実行している場合は、開始する前に、MySQLはローカルにインストールされます であることを確認する必要があります。 MacユーザーはターミナルからMySQL 自作を使用して をインストールでき(brew install mysql)、Linuxユーザーはローカルアプリリポジトリを使用できます(例:sudo apt install mysql)必要なパッケージをインストールします。

                                          LinuxまたはMacでMySQLに接続する

                                          1. MacでリモートMySQLサーバーに接続するまたはLinuxで、新しいターミナルウィンドウを開き、mysql -u username -h XXXX:XXXX -pと入力します。 XXXX:XXXXをリモートサーバーのIPアドレスとポート番号(例:100.200.100.200:3306)に置き換え、ユーザー名をMySQLユーザー名に置き換えます。
                                            1. プロンプトが表示されたら、パスワードを確認します。接続が成功すると、ターミナルに成功メッセージが表示されます。
                                            2. WindowsでMySQLに接続する

                                              1. 接続するにはWindows上のリモートMySQLサーバーにアクセスするには、[スタート]メニューを右クリックし、[Windows PowerShell(管理者)]を選択して新しいPowerShellウィンドウを開きます。
                                                1. 新しいPowerShellウィンドウで、cd“ C:\ Program Files \ MySQL \ MySQL Workbench 8.0 \”と入力して正しいフォルダーを入力し、このディレクトリを置き換えますPCの正しいインストールディレクトリを使用します。たとえば、MySQLのバージョンが8.0.1の場合は、代わりにMySQL Workbench 8.0.1フォルダを使用してください。
                                                  1. そこから、。\ mysql.exe -u username -h X.X.X.X:XXXX -pと入力します。 XXXX:XXXXをリモートサーバーのIPアドレスとポート番号(例:100.200.100.200:3306)に置き換え、ユーザー名をMySQLユーザー名に置き換えます。リモートアクセスを許可します(ルートなど)。画面上の追加の指示に従います。
                                                  2. プロンプトが表示されたらパスワードを入力して、サインインプロセスを完了し、MySQLデータベースにリモートでアクセスします。
                                                  3. これが機能しない場合は、これらの手順と-h localhost引数を使用して、SSHを使用して(または直接アクセスして)MySQLサーバーをホストしているサーバーまたはPCに接続します。次に、以下の手順に従って適切なユーザーアカウントを作成できます。

                                                    MySQLデータベースへのリモートユーザーアクセスを許可する

                                                    この時点で、次のようになります。サーバーのrootユーザーアカウントまたは昇格された特権を持つ別のユーザーアカウントを使用して、MySQLサーバーにリモートで接続できます。このレベルのアクセスは安全ではないため、MySQLデータベースにアクセスするためのより制限されたアカウントを作成することをお勧めします。

                                                    このアカウントはMySQLサーバーへのアクセスが制限され、選択したデータベースとのみ対話できるようになります。他のデータベースデータへのアクセス、新しいユーザーアカウントの作成など、より深刻な変更を加えることはできません。

                                                    MySQLサーバーにリモートでサインインする機能が必要です。 rootアカウントをリモートで使用できない場合は、リモートSSH接続を介してmysqlコマンドを使用するか、サーバーをホストしているPCまたはサーバーに直接アクセスして、サーバーのシェルにアクセスする必要があります。

                                                    1. リモートMySQLシェルで(mysqlツールを使用)、「CREATE USER“ username” @” xxxx” IDENTIFIED BY“ password”;と入力します。そしてEnterを選択します。 ユーザー名を作成するユーザー名に、xxxxを接続元のIPアドレスに、パスワードを適切なパスワードに置き換えます。
                                                      1. 新しいアカウントに必要な権限を付与する必要があります。これを行うには、GRANT ALL ONdatabasename。* TO username @” x.x.x.x”;と入力します。そして、データベース名、ユーザー名、x.x.x.xを正しい詳細に置き換えます。必要に応じて、データベース名*に置き換えて、すべてのデータベースへのアクセスを許可します。
                                                      2. アクセスが許可されたら、上記のセクションの手順を使用して、新しいアカウント(mysql -u usernameなど)を使用してサーバーにリモート接続します。 -h XXXX:XXXX -p)。

                                                        データベースデータの保護

                                                        MySQLまたは別のタイプのSQLを使用しているかどうかデータベースでは、データのセキュリティを維持するために接続を安全に保つことが重要です。これを行う良い方法は、古い(そして簡単に推測できる)パスワードに頼るのではなく、サーバーにリモートアクセス用のSSHキーを生成する することです。

                                                        データの損失が心配な場合は、オンラインで簡単にデータベースをバックアップします できます。ほとんどのデータベースはLinuxサーバーを使用して実行されます— Linuxファイルのバックアップを簡単に自動化 できます。 WindowsでMySQLを実行している場合は、同様のWindows用の自動バックアップシステム を設定して、緊急時にデータを復元できます。

                                                        <!-AIコンテンツ終了1->

                                                        関連記事:


                                                        9.08.2021