App Engine 및 외부에서 Google Compute Engine의 MySQL에 연결

App Engine 및 외부에서 Google Compute Engine의 MySQL에 연결

Compute Engine VM 인스턴스를 성공적으로 생성하고 이 가이드를 사용하여 여기에 MySQL을 설치했습니다. https://cloud.google.com/solutions/setup-mysql

이제 가능하다면 App Engine과 집에서도 연결하고 싶습니다. 이 가이드를 사용하여:https://cloud.google.com/appengine/docs/standard/python/connecting-vpc 제안된 10.8.0.0/28 IP 주소를 제공하여 커넥터를 만들었습니다.

내 앱 엔진의 app.yaml에 다음을 삽입했습니다. vpc_access_connector: 이름: 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'; 루트 사용자에게 모든 권한을 부여하고 모든 호스트의 루트 사용자로부터의 연결을 허용합니다(@ 뒤의 '%'는 모든 호스트를 의미하는 와일드카드입니다). 개인 네트워크에 이와 같은 와일드카드를 사용할 수 있습니다. 10.156.0.%호스트는 공용 IP 또는 개인 네트워크의 IP를 신청합니다. 자세한 내용은 이 사이트를 확인하세요.MySQL에 대한 원격 연결을 허용하는 방법. 광범위하게 개방된 허용 호스트 정책에 대한 보안 위험을 염두에 두십시오.

관련 정보