TCP를 통해 MySQL 프록시 Docker 컨테이너를 통해 Cloud SQL (2 세대)에 연결하는 방법

테크네튬

Mac OS X에서 실행 중이며 이러한 지침을 사용하여 프록시를 통해 Cloud SQL 인스턴스에 연결하려고했습니다 . MySQL 클라이언트, gce-proxy 컨테이너를 설치하고 Google Cloud Platform에서 서비스 계정을 만든 후에는 문서에 지정된 다음 두 명령을 실행합니다.

docker run -d -v /cloudsql:/cloudsql \
  -v [LOCAL_CERTIFICATE_FILE_PATH]:[LOCAL_CERTIFICATE_FILE_PATH] \
  b.gcr.io/cloudsql-docker/gce-proxy /cloud_sql_proxy \
  -instances=[INSTANCE_CONNECTION_NAME]=tcp:3306 -credential_file=[CLOUD_KEY_FILE_PATH]

mysql -h127.0.0.1 -uroot -p

첫째, 컨테이너가 포트를 노출하지 않기 때문에 이것이 어떻게 작동 해야하는지 이해하지 못합니다. 그래서 당연히 연결을 시도했을 때 MySQL 클라이언트에서 다음 오류가 발생합니다.

ERROR 2003 (HY000): Can't connect to MySQL server on '127.0.0.1' (61)

내가 추가하여 포트를 노출 할 경우 그러나 -p 3306:3306받는 docker run명령을, 난 여전히 연결할 수 없습니다. 대신 MySQL 클라이언트에서 다음 오류가 발생합니다.

ERROR 2013 (HY000): Lost connection to MySQL server at 'reading initial communication packet', system error: 0

해당 문서cloud_sql_proxy 에 따라 도커 호스트 컴퓨터에서 실행되는 프록시에 성공적으로 연결 되었으므로 내 자격 증명 파일과 mysql 클라이언트가 올바르게 구성되어 있다고 확신합니다. 컨테이너의 로그에는 연결이 시도되었다고 표시되지 않습니다. 도커를 통해 일반 mysql 컨테이너에 연결하는 데 문제가 없습니다. 내가 여기서 무엇을 놓치고 있습니까?

테크네튬

@Vadim의 제안을 시도했는데 기본적으로 다음과 같습니다.

docker run -d -v /cloudsql:/cloudsql \
  -p 127.0.0.1:3306:3306 \ 
  -v [LOCAL_CERTIFICATE_FILE_PATH]:[LOCAL_CERTIFICATE_FILE_PATH] \
  b.gcr.io/cloudsql-docker/gce-proxy /cloud_sql_proxy \
  -instances=[INSTANCE_CONNECTION_NAME]=tcp:0.0.0.0:3306 -credential_file=[CLOUD_KEY_FILE_PATH]

이 오류가 계속 발생하여 여전히 연결할 수 없습니다.

ERROR 2013 (HY000): Lost connection to MySQL server at 'reading initial communication packet', system error: 0

그러나 도커 컨테이너의 로그에는 다음과 같은 연결이 표시되었습니다.

2016/10/16 07:52:32 New connection for "[INSTANCE_CONNECTION_NAME]"
2016/10/16 07:52:32 couldn't connect to "[INSTANCE_CONNECTION_NAME]": Post https://www.googleapis.com/sql/v1beta4/projects/[PROJECT_NAME]/instances/[CLOUD_SQL_INSTANCE_NAME]/createEphemeral?alt=json: oauth2: cannot fetch token: Post https://accounts.google.com/o/oauth2/token: x509: failed to load system roots and no roots provided

이제 트래픽을받는 것처럼 보였지만 SSL 컨테이너에 대한 인증서를 찾지 못했습니다. OpenSSL의 cert.pem내 인증서 내보내기를 사용 하여 Docker 컨테이너의 동일한 위치에 마운트했습니다. 임의의 매핑이 [LOCAL_CERTIFICATE_FILE_PATH]:[LOCAL_CERTIFICATE_FILE_PATH]프록시가 인증서의 위치를 ​​파악하는 데 도움이되지 않았다는 것은 의미 가 있습니다. 그래서이 Kubernetes 설정 가이드 의 단서를 사용 하여 마운트 된 볼륨을 -v [LOCAL_CERTIFICATE_FILE_PATH]:/etc/ssl/certs. 자비 롭게도 효과가있었습니다.

요약 -다음은 Docker 컨테이너가 TCP를 통해 실행되도록하는 최종 구문입니다.

docker run -d \
    -p 127.0.0.1:3306:3306 \
    -v [SERVICE_ACCOUNT_PRIVATE_KEY_DIRECTORY]:[SERVICE_ACCOUNT_PRIVATE_KEY_DIRECTORY] \
    -v [LOCAL_CERTIFICATE_DIRECTORY]:/etc/ssl/certs \
    b.gcr.io/cloudsql-docker/gce-proxy /cloud_sql_proxy \
    -instances=[INSTANCE_CONNECTION_NAME]=tcp:0.0.0.0:3306 \
    -credential_file=[SERVICE_ACCOUNT_PRIVATE_KEY_JSON_FILE]

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

Exposed를 통해 Google Cloud SQL에 연결하는 방법

분류에서Dev

원격 호스트의 Docker 컨테이너 내에서 ansible 작업을 실행하기 위해 연결하는 방법 (ssh를 통해)

분류에서Dev

VPN을 통해 새로운 Google Cloud SQL (MySQL) 2 세대에 연결

분류에서Dev

Jira 컨테이너를 통해 Postgres 컨테이너에 연결

분류에서Dev

Web API .NET Core를 통해 SQL Server Docker 컨테이너에 연결할 수 없습니다.

분류에서Dev

프록시를 통해 Dropbox에 연결

분류에서Dev

kubernetes를 통해 컨테이너를 시작하는 동안 Docker 컨테이너에 모든 인수를 전달하는 방법에 대한 확실한 가이드가 있습니까?

분류에서Dev

Eclipse를 통해 mysql 데이터베이스에 연결하는 방법

분류에서Dev

워크로드 ID로 GKE를 통해 Cloud SQL 프록시에 연결할 수 없음

분류에서Dev

파이프를 통해 PHP 앱을 MySQL에 연결하는 방법은 무엇입니까?

분류에서Dev

DataGateway를 통해서만 Power BI를 MS SQL에 연결하는 방법

분류에서Dev

WSL 2에서 Docker를 통해 TCP 서버에 연결하는 데 문제가 있습니다.

분류에서Dev

GKE에서 Stackdriver를 통해 컨테이너 로그를 보는 방법

분류에서Dev

Docker 컨테이너에서 Spring Cloud OAuth2를 구성하는 방법

분류에서Dev

PHP는 프록시를 통해 HTTPS 사이트에 연결

분류에서Dev

Windows는 컨테이너의 IP를 통해 Docker Window에 연결할 수 없습니다.

분류에서Dev

SQL을 통해 폴링 결과를 표시하는 방법

분류에서Dev

Apache HttpClient 4.3.4를 사용하여 프록시를 통해 서버 SSL 포트에 대한 연결을 테스트하는 방법은 무엇입니까?

분류에서Dev

CLI를 통해 Bluemix Docker 컨테이너 "크기"를 지정하는 방법은 무엇입니까?

분류에서Dev

ssh를 통해 시작할 때 Docker 컨테이너 mongod 오류

분류에서Dev

API를 통해 Docker 컨테이너에 외부 링크 할당

분류에서Dev

Node.js를 통해 SQLite3에 연결하는 방법

분류에서Dev

UFW를 통해 CISCO VPN에 연결하는 방법

분류에서Dev

SSH를 통해 내 웹 호스트에 연결하는 방법

분류에서Dev

d-bus를 통해 호스트와 통신하도록 Docker 컨테이너 설정

분류에서Dev

mysql / phpmyadmin에서 mydatabase.sql로 내 보낸 php / pdo를 통해 SQL 데이터베이스에 연결하는 방법은 무엇입니까?

분류에서Dev

직접 이더넷 연결을 통해 SSH를 통해 장치에 연결하는 방법

분류에서Dev

비공개 IP를 통해 GKE에서 Cloud SQL로 연결

분류에서Dev

프록시를 통해 SSMS를 사용하여 Cloud SQL에서 SQL Server 인스턴스에 액세스하려고 할 때 Connectex 오류를 수정하는 방법

Related 관련 기사

  1. 1

    Exposed를 통해 Google Cloud SQL에 연결하는 방법

  2. 2

    원격 호스트의 Docker 컨테이너 내에서 ansible 작업을 실행하기 위해 연결하는 방법 (ssh를 통해)

  3. 3

    VPN을 통해 새로운 Google Cloud SQL (MySQL) 2 세대에 연결

  4. 4

    Jira 컨테이너를 통해 Postgres 컨테이너에 연결

  5. 5

    Web API .NET Core를 통해 SQL Server Docker 컨테이너에 연결할 수 없습니다.

  6. 6

    프록시를 통해 Dropbox에 연결

  7. 7

    kubernetes를 통해 컨테이너를 시작하는 동안 Docker 컨테이너에 모든 인수를 전달하는 방법에 대한 확실한 가이드가 있습니까?

  8. 8

    Eclipse를 통해 mysql 데이터베이스에 연결하는 방법

  9. 9

    워크로드 ID로 GKE를 통해 Cloud SQL 프록시에 연결할 수 없음

  10. 10

    파이프를 통해 PHP 앱을 MySQL에 연결하는 방법은 무엇입니까?

  11. 11

    DataGateway를 통해서만 Power BI를 MS SQL에 연결하는 방법

  12. 12

    WSL 2에서 Docker를 통해 TCP 서버에 연결하는 데 문제가 있습니다.

  13. 13

    GKE에서 Stackdriver를 통해 컨테이너 로그를 보는 방법

  14. 14

    Docker 컨테이너에서 Spring Cloud OAuth2를 구성하는 방법

  15. 15

    PHP는 프록시를 통해 HTTPS 사이트에 연결

  16. 16

    Windows는 컨테이너의 IP를 통해 Docker Window에 연결할 수 없습니다.

  17. 17

    SQL을 통해 폴링 결과를 표시하는 방법

  18. 18

    Apache HttpClient 4.3.4를 사용하여 프록시를 통해 서버 SSL 포트에 대한 연결을 테스트하는 방법은 무엇입니까?

  19. 19

    CLI를 통해 Bluemix Docker 컨테이너 "크기"를 지정하는 방법은 무엇입니까?

  20. 20

    ssh를 통해 시작할 때 Docker 컨테이너 mongod 오류

  21. 21

    API를 통해 Docker 컨테이너에 외부 링크 할당

  22. 22

    Node.js를 통해 SQLite3에 연결하는 방법

  23. 23

    UFW를 통해 CISCO VPN에 연결하는 방법

  24. 24

    SSH를 통해 내 웹 호스트에 연결하는 방법

  25. 25

    d-bus를 통해 호스트와 통신하도록 Docker 컨테이너 설정

  26. 26

    mysql / phpmyadmin에서 mydatabase.sql로 내 보낸 php / pdo를 통해 SQL 데이터베이스에 연결하는 방법은 무엇입니까?

  27. 27

    직접 이더넷 연결을 통해 SSH를 통해 장치에 연결하는 방법

  28. 28

    비공개 IP를 통해 GKE에서 Cloud SQL로 연결

  29. 29

    프록시를 통해 SSMS를 사용하여 Cloud SQL에서 SQL Server 인스턴스에 액세스하려고 할 때 Connectex 오류를 수정하는 방법

뜨겁다태그

보관