App Engine および外部から Google Compute Engine 上の MySQL に接続する

App Engine および外部から Google Compute Engine 上の MySQL に接続する

次のガイドに従って、Compute Engine VM インスタンスを作成し、そこに MySQL をインストールしました。 詳しくはこちら

今は、App Engine から、そして可能であれば自宅からも接続したいと思っています。このガイドを使用すると、次のようになります。https://cloud.google.com/appengine/docs/standard/python/connecting-vpc コネクタを作成し、推奨される 10.8.0.0/28 IP アドレスを指定しました。

私のアプリエンジンの app.yaml に以下を挿入しました: vpc_access_connector: name: projects/locationconnection/locations/europe-west3/connectors/vpcaccess

VMインスタンスには、内部IPが10.156.0.2、外部IPが34.89.141.17と表示されます。

次の行を使用して PHP から接続しようとしています: new mysqli($servername, $username, $password, $dbname, 3306, null); しかし、異なるエラーが発生します。

自宅から 34.89.141.17 に接続する場合: mysqli::__construct(): (HY000/2002): ターゲット マシンが積極的に拒否したため、接続できませんでした。(自宅の IP からのすべてのトラフィックを許可するファイアウォール ルールも作成しました)

アプリエンジンから 10.8.0.0 に接続する場合: 2002: 接続がタイムアウトしました

アプリエンジンから 10.156.0.2 に接続する場合: 2002: 接続が拒否されました

どうすれば接続できますか?

答え1

ガイドについてGoogle Compute Engine で MySQL を設定する方法Mysql の設定方法を示していますが、Mysql には独自の設定があることに留意してください。あなたが言及したエラーによると、問題は Mysql が外部接続を許可することです。ユーザーを追加して権限を付与する場合 (または既存のユーザーの場合)、そのユーザーが接続できるホストまたはネットワーク範囲を指定する必要があります。たとえば、この行は、GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password'; すべての権限を root ユーザーに付与し、すべてのホストからの root ユーザーからの接続を許可します (@ の後の '%' はワイルドカードで、すべてのホストからという意味です)。プライベート ネットワークには、次のようにワイルドカードを使用できます。10.156.0.%ホストはパブリック IP またはプライベート ネットワークの IP に適用されます。詳細については、このサイトを確認してください。MySQL へのリモート接続を許可する方法広く開かれたホスト ポリシーの許可にはセキュリティ リスクがあることに留意してください。

関連情報