MySQLへのリモート接続を有効にすると便利な場合があります。これにより、別のシステムで実行されているアプリケーションまたはMySQLクライアントからサーバーの1つでMySQLに直接接続できます。
MySQLにリモートでアクセスする方法は2つあります。
- SSHトンネルを使用します。
- リモートシステムからMySQLへの直接アクセスを有効にします。
SSHトンネルを使用したMySQLへの接続
SSHトンネルの使用は、開発目的でのリモートMySQLアクセスの最も簡単で安全なオプションです。 SSHトンネルは、MySQLがローカルシステムで実行されているように見せます。 SSHは、ローカルポートを開き、そのポートを介したすべての通信をサーバーで実行されているMySQLにシームレスに転送することでこれを行います。
MacまたはLinuxからSSHトンネルを作成するには、-L
を使用してコマンドラインSSHコマンドを実行できます。 ローカルポート転送を有効にします。
ssh -L localhost:2000:localhost:3306 serverpilot@SERVER_IP_ADDRESS
上記の例では、SSHはローカルシステムでポート2000を開き、このローカルポートに接続することでMySQLと通信できます。たとえば、MySQLコマンドを使用して接続できます:
mysql --protocol=tcp --host=localhost --port=2000 --user=DB_USER_NAME -p-protocol =tcpを省略しないでください または、MySQLは-hostを黙って無視する場合があります および--port オプション。
人気のあるWindowsSSHクライアントであるPuTTyを使用して、Windows上にSSHトンネルを作成することもできます。
リモートシステムからMySQLへの直接アクセスを有効にする
警告! MySQLへの直接アクセスを許可すると、攻撃者によってサーバーが危険にさらされるリスクが高まります。 警告! MySQLはデフォルトで安全な接続を使用しません。 MySQLのマニュアルには、MySQLを使用したSSLに関する詳細が記載されています。ステップ1:すべてのインターフェースでリッスンするようにMySQLを構成します。
デフォルトでは、MySQLは localhostでの接続のみをリッスンします したがって、最初のステップは、データベースサーバーでMySQLを再構成して、すべてのインターフェイスでリッスンすることです。これを行うには、 rootとしてサーバーにログインします。 。
Ubuntu 16.04または18.04サーバーを実行している場合は、次のファイルを編集します。
/etc/mysql/mysql.conf.d/mysqld.cnf
14.04または12.04サーバーの場合は、次のファイルを編集します。
/etc/mysql/my.cnf
いずれかのファイルで次の行を見つけます。
bind-address = 127.0.0.1
bind-addressを変更します 〜 0.0.0.0 :
bind-address = 0.0.0.0
このファイルを保存してから、次のコマンドを rootとして実行します。 :
sudo service mysql restart
ステップ2:サーバーのファイアウォールでTCPポート3306を開きます。
ServerPilotによって構成されたファイアウォールは、サーバーの外部からのMySQLへのすべてのアクセスをブロックします。したがって、MySQLへのアクセスを許可するようにファイアウォールをカスタマイズする必要があります。
サーバーの外部からMySQLへのアクセスを開くには、ファイアウォールのカスタマイズに関する記事を参照してください。
EC2の追加手順:セキュリティグループでTCPポート3306を許可します。
これがEC2サーバーの場合は、サーバーのセキュリティグループでポート3306も許可する必要があります。
リモートホストを使用するようにアプリを構成します。
リモートMySQLサーバーをセットアップしたら、データベーストランザクションにそのホストを使用するようにアプリを構成する必要があります。これは通常、アプリの構成ファイルで設定され、例としてWordPressを使用します。
アプリのwp-config.phpファイルを開きます。
この行:
define('DB_HOST', 'localhost');
「localhost」をリモートMySQLサーバーのIPアドレスまたは完全なホスト名に変更します。 IPアドレスは、DNS解決に依存しないため、通常、より高速で信頼性の高い選択肢になります。
ファイルを保存して終了すると、準備は完了です。これで、アプリをテストして、正しく機能していることを確認できます。