ãã®ãã©ã€ããŒã®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ïŒãå®è¡ããŠããããã«èŠããŸã
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æéã®ã°ãŒã°ã«ã®åŸãããŒããŒãã«é ãã¶ã€ããã®ããããã®ãæäŒã£ãŠãããŸããïŒ ãã¬ã«ã€ïŒïŒïŒ
æãåèã«ãªãã³ã¡ã³ã
@bagatelliæ確ã«ããããã«ããã®ã³ã¡ã³ãã§èšåãããŠããæ¥ç¶æåå圢åŒã䜿çšããŠããããšã確èªããŠãã ããïŒ http ://stackoverflow.com/questions/38890022/tls-requested-but-server-does-not-support-tls-error-
åã®ç°¡æœãã®ããã«ç³ãèš³ãããŸããã Go onAppEngineã®ç¬¬2äžä»£ãåé¡ãªã䜿çšããŠããŸãã SQLãããã·ãè¿œå ããããããtlsConfigNameããã©ã¡ãŒã¿ã¯çç¥ããŠãã ããããã ããã©ã¡ãã®æ¹æ³ã§ããTLSããµããŒããããããã«ãªã£ãããšãå ±åããŸãã