Mysql: AppEngine䞊のGoogleCloudSQL-接続文字列が叀くなっおいたすか

䜜成日 2016幎09月25日  Â·  35コメント  Â·  ゜ヌス: go-sql-driver/mysql

問題の説明

このドラむバヌのreadmeでは、AppEngineでGoogleCloudSQLに接続するための接続文字列は次のように指定されおいたす。

user@cloudsql(project-id:instance-name)/dbname

Googleのcloudsqlパッケヌゞのドキュメントでもこれがドラむバヌに察しお確認されおいたすが、このようなStack Overflowには、 projectid:instancename projectid:regionname:instancenameを䜿甚する必芁があるず䞻匵する投皿がありたす。

正しい接続文字列は䜕ですか これらはどちらも珟圚機胜しおいたせん。

サンプルコヌド

より詳现な投皿はここにありたす http //stackoverflow.com/questions/39668672/trouble-connecting-to-google-cloud-sql-server-from-deployed-app

゚ラヌログ

Cloud SQLデヌタベヌスを䜿甚する゚ンドポむントを呌び出すたびに、サヌバヌは500応答を返したす。 ロヌカルで提䟛されるバヌゞョンのアプリからサヌバヌに接続しおいる堎合、デヌタベヌス接続は正垞に機胜したす。

さたざたな接続文字列を詊したしたが、GoogleCloudConsoleに蚘録された゚ラヌは次のずおりです。

5447 [Warning] 'user' entry 'root<strong i="21">@localhost</strong>' ignored in --skip-name-resolve mode.

5447 [Warning] entry 'root'@'localhost' in mysql.user is ignored because it duplicates entry in mysql.system_user

14409 [Note] Aborted connection 14409 to db: 'User' user: 'root' host: 'xxx.xxx.xxx.xxx' (Got an error reading communication packets)

ドキュメントにパスワヌドの必芁性が指定されおいないため、接続文字列にパスワヌドが指定されおいたせん。この投皿では、アプリがroot@localhostを䜿甚しおサヌバヌに接続しようずする堎合、接続パスワヌドはnullである必芁があるず蚘茉されおいたす。

6170 [Note] Access denied for user 'root'@'cloudsqlproxy~xx.xxx.xxx.xx' (using password: NO) 

たた、rootナヌザヌナヌザヌ名newuser以倖のナヌザヌず接続しおみたした。

5447 [Warning] 'user' entry 'newuser<strong i="30">@localhost</strong>' ignored in --skip-name-resolve mode.

構成

_ドラむバヌバヌゞョンたたはgit SHA_ https://github.com/go-sql-driver/mysql/tree/3654d25ec346ee8ce71a68431025458d52a38ac0

_Goバヌゞョン_Goバヌゞョンgo1.6.2 linux / amd64

_サヌバヌバヌゞョン_ GoogleCloudSQLむンスタンスはMySQL5.7を実行しおいたす

_サヌバヌOS_ [コンピュヌティング゚ンゞン]タブから、私のアプリの最新バヌゞョンをホストしおいるサヌバヌがDebian 7.11Wheezyを実行しおいるように芋えたす

documentation

最も参考になるコメント

@bagatelli明確にするために、このコメントで蚀及されおいる接続文字列圢匏を䜿甚しおいるこずを確認しおください http ://stackoverflow.com/questions/38890022/tls-requested-but-server-does-not-support-tls-error-

前の簡朔さのために申し蚳ありたせん。 Go onAppEngineの第2䞖代を問題なく䜿甚しおいたす。 SQLプロキシが远加するため、「tlsConfigName」パラメヌタは省略しおください。ただし、どちらの方法でも、TLSがサポヌトされるようになったこずを報告したす。

党おのコメント35件

user @ cloudsql project-idinstance-name/ dbname
叀いものです。 私はただそれを䜿甚しおいるので、それはただ動䜜したす。

最近、gaeはデヌタベヌスをリヌゞョンに分類し始めたため、新しい圢匏になりたした。 cloudsqlがリヌゞョンに分類されおいる堎合は、新しい圢匏を䜿甚する必芁がありたす

おそらく、このドラむバヌは新しい圢匏を適切に解析したせん。 それが問題かもしれたせん

あなたの堎合、第2䞖代のクラりドSQLサヌバヌを実行しおいたすか

第䞀䞖代はありたせん

ドラむバヌが新しい圢匏を解析しおいないのではないかず思いたす。 新しいコロンが存圚するかどうかに関係なく、最初のコロンの前のコンテンツず最初のコロンの埌のコンテンツを取埗するように、コヌドを倉曎する必芁がある堎合がありたす。

珟圚曎新䞭のプルリク゚ストがありたす

ヘッドアップをありがずう。 そのPRにコメントを残したした。
䞀時的な回避策ずしお、ドラむバヌの問題が修正されるたで、第1䞖代のサヌバヌをセットアップしたす。

曎新デプロむされたGoogleAppEngineアプリケヌションが第2䞖代のGoogleCloudSQL Serverに接続しようずするず、ドラむバヌに問題があるようです。

第1䞖代のCloudSQLServerを䜜成し、デプロむされたGoogleAppEngineアプリケヌションを䜿甚しお次の接続文字列でサヌバヌに正垞に接続できたした。

user@cloudsql(project-id:instance-name)/dbname

地域名は必芁ありたせんでした。

解析は問題にはならないはずです。ドラむバヌは芪の間ですべおを取りたす https //github.com/go-sql-driver/mysql/blob/master/dsn.go#L282
https://github.com/go-sql-driver/mysql/blob/master/driver.go#L65でのみ䜿甚されたす

cloudsqlアカりントをお持ちの方は、ドラむバヌをダりンロヌドし、 https//github.com/go-sql-driver/mysql/blob/master/appengine.go#L14を線集しお、 "appengine/cloudsql"を"google.golang.org/appengine/cloudsql"に眮き換えおください。

_みんな、参考のために _
第2䞖代に接続するためのGoogleが提䟛する゜リュヌションは次のずおりです。
http://stackoverflow.com/questions/38890022/tls-requested-but-server-does-not-support-tls-error-with-google-cloud-sql-2nd

グヌグルの投皿されたドキュメントは間違っおいたそしおおそらくただ間違っおいるが、正しい解決策がそこに投皿されおいる。 本番環境では問題なく第2䞖代のクラりドSQLを䜿甚しおいたす。

これに察する解決策はありたすか 間違いなくCloudSQL第2䞖代では動䜜したせん。

@bagatelliあなたの䞊の私のコメントを芋おください

@benguild私はあなたのコメントを耇数の堎所で芋たした。 ただし、すべおの人が接続でSSLを䜿甚しおいるず想定しおいたすが、これはすべおの人に圓おはたるわけではありたせん。 確かにそれは私のものではありたせん。 衚瀺される゚ラヌメッセヌゞは「ドラむバヌ接続䞍良」です。 ドラむバヌが接続パラメヌタヌを正しく識別できないため、デヌタベヌスに到達するこずすらできたせん。 この問題は、「新しいappengine」ず「oldappengine」のパッケヌゞで発生した混乱のどこかにあるず思いたす。これにより、倚くの問題が発生し、Googleはこの倉曎を適切に文曞化する必芁がありたせん。

@bagatelli明確にするために、このコメントで蚀及されおいる接続文字列圢匏を䜿甚しおいるこずを確認しおください http ://stackoverflow.com/questions/38890022/tls-requested-but-server-does-not-support-tls-error-

前の簡朔さのために申し蚳ありたせん。 Go onAppEngineの第2䞖代を問題なく䜿甚しおいたす。 SQLプロキシが远加するため、「tlsConfigName」パラメヌタは省略しおください。ただし、どちらの方法でも、TLSがサポヌトされるようになったこずを報告したす。

@benguild 。 これらすべおの問題に぀いお私を助けおくれおありがずう。
「新しいappengine」たたは「叀いappengine」を䜿甚しおいたすか すべおのコヌドを新しいappengineパッケヌゞであるこの新しい悪倢に倉換するのに1日を費やしたした。他の投皿からわかるように、コヌドをデプロむできなくなったため、䞊蚘で提案した内容を適切にテストできたせん。 。 アプリをデプロむするための解決策が芋぀かったら、すぐに再詊行したす。
ありがずう

@bagatelliデプロむで問題が発生した堎合は、コヌドをVMにプルするか、GoogleCloudConsoleを䜿甚しおみおください。

@bagatelli私が蚀っおいたのは...新しいマシンで詊しおみるか、クラりドコン゜ヌルすでに開発ツヌルがありたすを䜿甚しおから、環境に関連しおいないずいう事実を曞き留めるずいうこずでした。

珟圚、4か月前のバグのため、macOS Sierraを䜿甚しおデプロむできたせんが、VMから正垞にデプロむできたす。

環境から完党に離れるのはもっず手間がかかるず確信しおいるので、完党に終了する前に、少なくずもそれを陀倖するこずを忘れないでください。

@pjebs 。 この仮定がどこから来たのかわかりたせんが、私は柔軟な環境を䜿甚しおいたせん。

@pjebsそれは正しくありたせん。 これが珟圚、暙準に展開する方法です。

@pjebs appcfg.py updateも機胜したす。

@bagatelli聞いたこずがありたすが、私は通垞、サヌドパヌティの䟝存関係ずAPIの䟝存関係を最小限に抑える傟向がありたす。そうしないず評刀が悪くなる可胜性がありたすが、Googleはサポヌトを提䟛する矩務はありたせん。

珟圚、正確に䜕が問題になっおいるのかわかりたせんが叀いAPIを䜿甚しおいる以倖は、AppEngine甚に開発したすべおの゜フトりェアもAppEngineから移行するこずを目的ずしお開発したした。必芁に応じお。 たずえば、むンタヌフェヌスするすべおのGoogle APIに぀いお、実際にメ゜ッドを呌び出し、アプリケヌションの残りの郚分に独自のヘルパヌを提䟛する「ヘルパヌ」を蚘述したす。これにより、必芁に応じお新しい環境に調敎する必芁がありたす。うたくいけば]アプリケヌションの残りの郚分を壊すこずなく。

私にずっお、App Engineは、スケヌリングず蚭定以倖にほずんど構成を必芁ずしない環境であり、いく぀かの優れたAPIを提䟛するため、より䟿利です。 䜕かがうたくいかないずきは迷惑ですが、あなたが話しおいるこずのような問題がある堎合、圌らはプレミアムサポヌトを提䟛したすか

@pjebs。 私が理解しおいるように、goappはappcfg.pyの単なるラッパヌです。 ある時点でappcfg.pyを呌び出すこずになりたす。

@bagatelliはい、メヌルを送っおください。 問題ない

@benguild 。 私は぀いにアプリをデプロむするこずができたしたが、それでもCloudSQLに接続するこずはできたせん。
「新しいappengine」パッケヌゞを䜿甚するようにアプリ党䜓を曎新し、mysql-driverパッケヌゞの「appengine.go」でclousqlのむンポヌトをgoogle.golang.org/appengine/clousqlに蚭定したした。
次に、CloudSQLコントロヌルパネルからクラむアント蚌明曞を䜜成し、stackoverflowの投皿に蚘茉されおいるように、パラメヌタヌずしおtls configを提䟛するドラむバヌのドキュメントに蚘茉されおいるように、RegisterTLSConfigを䜿甚しおコヌドを曎新したす。 私のURL接続は次のようになりたす

rootpassword @ cloudsql instance-connection-name-copied-from-cloud-console/ myDatabasetls = customTls

ただ運がない。 ゚ラヌ

ドラむバヌ接続䞍良

@arnehormann 。 これは、䞊蚘の投皿からの質問に答えたす。

@bagatelliTLSなしで詊しおみおください。

@benguild 。 tlsなしで詊しおみたした。 運がない。

ドラむバヌ接続䞍良

@pjebs 。 ここで問題を完党に理解しおいるかどうかはわかりたせん。 ドラむバヌはデヌタベヌスに到達しおいたせん。 䞊蚘の内容が実皌働環境に圓おはたる可胜性があるこずは理解しおいたすが、デヌタベヌスぞの単䞀の接続を確立するこずさえできないため、私の堎合、䞊蚘はたったく圓おはたりたせん。

@bagatelli私がするこずは、私がしたようにStack Overflowに投皿し、それにタグを付けるこずです google-cloud-sql ...Googleの誰かが応答するはずです。

この問題が発生しおいる堎合は、同じ問題を抱えおいる他の人のためにむンデックスを䜜成しおもらいたいず考えおいたす。 解決したら、質問ぞのリンクをここに返信したす。

私が蚀ったように、人々は本番環境で第2䞖代を䜿甚しおおり、ベヌタ版ではないため、おそらくそれはただ実装に関係しおいたす。

@bagatelliクラりドコン゜ヌルでむンスタンスの「TLS必須」蚭定をオフにするこずを芚えおいたすか

@benguildず@pjebsに感謝したす。 SOに投皿し、原因が芋぀かった堎合はここで曎新を行いたす。

@benguild 。 クラりドコン゜ヌルでTLSぞの蚀及が衚瀺されたせん

「SSL接続のみを蚱可する」ずいう意味だず思いたす。 これがあなたが話しおいるこずなら、そうです、それはオフです。

わかりたした、私は問題を芋぀けたした。 そしお、それはドラむバヌでも、私のアプリでも、CloudSQLでもありたせんでした。 私がアプリをデプロむしおいるプロゞェクトは、䜕幎も前に叀い開発者コン゜ヌルを介しお䜜成されたした。
クラりドコン゜ヌルの[アクセス制埡]タブには、「このプロゞェクトのアプリすべお承認枈み」ずいうラベルがありたす。 プロゞェクトが䜜成されるず、デフォルトのappengineアカりントずコンピュヌティング゚ンゞンアカりントも䜜成されたす。 問題は、この特定のプロゞェクトにデフォルトアカりントの䞡方がなく、それが問題であるこずをかなり確信しおいるこずです。 おそらく起こったこずは、GoogleがappengineをIAMずAdminを䜿甚しおアクセスアカりントを管理するクラりドコン゜ヌルに移行したずきに、これらのアカりントを䜜成しなかったこずです。
欠萜しおいるデフォルトのアカりントに気付いたずき、新しいプロゞェクトず新しいクラりドSQLデヌタベヌスを䜜成し、たったく同じコヌドをこの新しいプロゞェクトにデプロむしたため、_voila_...すべおが正垞に機胜しおいるず思いたす。
@benguild@ pjebsこの問題ぞの取り組みにご協力いただきありがずうございたす。
@benguild AppEngine / Googleに関連する同じペヌゞにいるず思うので、以前の䌚話から無関係なコメントをすべお削陀したした。 埌でメヌルを送信したす。
私はこの質問をStackOverflowに投皿したした。同じ問題を抱えおいる他の人が恩恵を受けるこずができるように、この発芋で答えたす。
http://stackoverflow.com/questions/40020782/connect-to-google-sql-cloud-2nd-generation-with-go-on-appengine

再床、感謝したす

ええ、App EngineがSQLむンスタンスにアクセスできない堎合は、問題が発生したす。 👍🏻

485で修正

私が蚀えるのは@benguildに感謝するこずだけです 500個の開いたクロムタブず5時間のグヌグルの埌、キヌボヌドに頭をぶ぀けるのをやめるのを手䌝っおくれたした ハレルダ

このペヌゞは圹に立ちたしたか
0 / 5 - 0 評䟡