Mysql: App Engine์˜ Google Cloud SQL - ์—ฐ๊ฒฐ ๋ฌธ์ž์—ด์ด ์˜ค๋ž˜๋˜์—ˆ์Šต๋‹ˆ๊นŒ?

์— ๋งŒ๋“  2016๋…„ 09์›” 25์ผ  ยท  35์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: go-sql-driver/mysql

๋ฌธ์ œ ์„ค๋ช…

์ด ๋“œ๋ผ์ด๋ฒ„์˜ ์ถ”๊ฐ€ ์ •๋ณด์—์„œ App Engine์˜ Google Cloud SQL์— ์—ฐ๊ฒฐํ•˜๊ธฐ ์œ„ํ•œ ์—ฐ๊ฒฐ ๋ฌธ์ž์—ด์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค.

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

Google์˜ cloudsql ํŒจํ‚ค์ง€ ๋ฌธ์„œ ์—์„œ๋„ ๋“œ๋ผ์ด๋ฒ„์— ๋Œ€ํ•ด ์ด๋ฅผ ํ™•์ธํ•˜์ง€๋งŒ projectid:instancename projectid:regionname:instancename ๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค๊ณ  ์ฃผ์žฅํ•˜๋Š” ์ด์™€ ๊ฐ™์€ Stack Overflow ๊ฒŒ์‹œ๋ฌผ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

์˜ฌ๋ฐ”๋ฅธ ์—ฐ๊ฒฐ ๋ฌธ์ž์—ด์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ๋‘˜ ๋‹ค ํ˜„์žฌ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์˜ˆ์ œ ์ฝ”๋“œ

๋” ์ž์„ธํ•œ ๊ฒŒ์‹œ๋ฌผ์€ http://stackoverflow.com/questions/39668672/trouble-connecting-to-google-cloud-sql-server-from-deployed-app ์—์„œ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์˜ค๋ฅ˜ ๊ธฐ๋ก

Cloud SQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์—”๋“œํฌ์ธํŠธ๋ฅผ ํ˜ธ์ถœํ•  ๋•Œ๋งˆ๋‹ค ์„œ๋ฒ„์—์„œ 500 ์‘๋‹ต์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ๋‚ด ์•ฑ์˜ ๋กœ์ปฌ ๋ฒ„์ „์—์„œ ์„œ๋ฒ„์— ์—ฐ๊ฒฐํ•  ๋•Œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—ฐ๊ฒฐ์ด ์ œ๋Œ€๋กœ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

๋‹ค์–‘ํ•œ ์—ฐ๊ฒฐ ๋ฌธ์ž์—ด์„ ์‹œ๋„ํ–ˆ์œผ๋ฉฐ ๋‹ค์Œ์€ Google Cloud Console์— ๊ธฐ๋ก๋œ ๋ช‡ ๊ฐ€์ง€ ์˜ค๋ฅ˜์ž…๋‹ˆ๋‹ค.

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) 

๋˜ํ•œ ๋ฃจํŠธ ์‚ฌ์šฉ์ž(์‚ฌ์šฉ์ž ์ด๋ฆ„: 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

_์ด๋™ ๋ฒ„์ „:_ ์ด๋™ ๋ฒ„์ „ go1.6.2 linux/amd64

_์„œ๋ฒ„ ๋ฒ„์ „:_ Google Cloud SQL ์ธ์Šคํ„ด์Šค๋Š” MySQL 5.7์„ ์‹คํ–‰ ์ค‘์ž…๋‹ˆ๋‹ค.

_์„œ๋ฒ„ OS:_ Compute Engine ํƒญ์—์„œ ๋‚ด ์•ฑ์˜ ์ตœ์‹  ๋ฒ„์ „์„ ํ˜ธ์ŠคํŒ…ํ•˜๋Š” ์„œ๋ฒ„๊ฐ€ Debian 7.11(Wheezy)์„ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ž…๋‹ˆ๋‹ค.

documentation

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

@bagatelli ๋ช…ํ™•ํžˆ ํ•˜๊ธฐ ์œ„ํ•ด ์ด ์ฃผ์„์— ์–ธ๊ธ‰๋œ ์—ฐ๊ฒฐ ๋ฌธ์ž์—ด ํ˜•์‹์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š”์ง€ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค. http://stackoverflow.com/questions/38890022/tls-requested-but-server-does-not-support-tls-error- with-google-cloud-sql-2nd#comment65140499_38890022

์ด์ „์˜ ๊ฐ„๊ฒฐํ•จ์— ๋Œ€ํ•ด ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ๋ฌธ์ œ ์—†์ด Go on App Engine์˜ ํ”„๋กœ๋•์…˜์—์„œ 2์„ธ๋Œ€๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. SQL ํ”„๋ก์‹œ๊ฐ€ ์ถ”๊ฐ€ํ•  ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— "tlsConfigName" ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์ƒ๋žตํ•˜์‹ญ์‹œ์˜ค. ๊ทธ๋Ÿฌ๋‚˜ ์–ด๋Š ์ชฝ์ด๋“  ์ด์ œ TLS๊ฐ€ ์ง€์›๋œ๋‹ค๊ณ  ๋ณด๊ณ ํ•ฉ๋‹ˆ๋‹ค.

๋ชจ๋“  35 ๋Œ“๊ธ€

user@cloudsql (ํ”„๋กœ์ ํŠธ ID:์ธ์Šคํ„ด์Šค ์ด๋ฆ„)/dbname
์˜ค๋ž˜๋œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์—ฌ์ „ํžˆ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

์ตœ๊ทผ gae๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์ง€์—ญ์œผ๋กœ ๋ถ„๋ฅ˜ํ•˜๊ธฐ ์‹œ์ž‘ํ•˜์—ฌ ์ƒˆ๋กœ์šด ํ˜•์‹๋„ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. cloudsql์ด ์ง€์—ญ์œผ๋กœ ๋ถ„๋ฅ˜๋œ ๊ฒฝ์šฐ ์ƒˆ ํ˜•์‹์„ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์•„๋งˆ๋„ ์ด ๋“œ๋ผ์ด๋ฒ„๊ฐ€ ์ƒˆ ํ˜•์‹์„ ์ œ๋Œ€๋กœ ๊ตฌ๋ฌธ ๋ถ„์„ํ•˜์ง€ ๋ชปํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์ด ๋ฌธ์ œ์ผ ์ˆ˜ ์žˆ๋‹ค

๊ท€ํ•˜์˜ ๊ฒฝ์šฐ 2์„ธ๋Œ€ Cloud SQL ์„œ๋ฒ„๋ฅผ ์‹คํ–‰ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ?

1์„ธ๋Œ€ ์—†์Œ

๋“œ๋ผ์ด๋ฒ„๊ฐ€ ์ƒˆ ํ˜•์‹์„ ๊ตฌ๋ฌธ ๋ถ„์„ํ•˜์ง€ ์•Š๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์ฝ”๋“œ๋Š” ์ƒˆ๋กœ์šด ์ฝœ๋ก ์˜ ์กด์žฌ ์—ฌ๋ถ€์— ๊ด€๊ณ„์—†์ด ์ฒซ ๋ฒˆ์งธ ์ฝœ๋ก  ์•ž์˜ ๋‚ด์šฉ๊ณผ ์ฒซ ๋ฒˆ์งธ ์ฝœ๋ก  ๋’ค์˜ ๋‚ด์šฉ์„ ์ทจํ•˜๋„๋ก ๋ณ€๊ฒฝํ•ด์•ผ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ˜„์žฌ read me๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๋Š” pull ์š”์ฒญ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ๋ฐฉ๊ธˆ ๊ทธ PR์— ๋Œ“๊ธ€์„ ๋‚จ๊ฒผ์Šต๋‹ˆ๋‹ค.
์ž„์‹œ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์œผ๋กœ ๋“œ๋ผ์ด๋ฒ„ ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋  ๋•Œ๊นŒ์ง€ 1์„ธ๋Œ€ โ€‹โ€‹์„œ๋ฒ„๋ฅผ ์„ค์ •ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

์—…๋ฐ์ดํŠธ: ๋ฐฐํฌ๋œ Google App Engine ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด 2์„ธ๋Œ€ Google Cloud SQL Server์— ์—ฐ๊ฒฐ์„ ์‹œ๋„ํ•  ๋•Œ ๋“œ๋ผ์ด๋ฒ„์— ๋ฌธ์ œ๊ฐ€ ์žˆ๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

1์„ธ๋Œ€ Cloud SQL Server๋ฅผ ๋งŒ๋“ค์—ˆ๊ณ  ๋‹ค์Œ ์—ฐ๊ฒฐ ๋ฌธ์ž์—ด๋กœ ๋ฐฐํฌ๋œ Google App Engine ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‚ฌ์šฉํ•˜์—ฌ ์„œ๋ฒ„์— ์„ฑ๊ณต์ ์œผ๋กœ ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

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

Google์˜ ๊ฒŒ์‹œ๋œ ๋ฌธ์„œ๋Š” ์ž˜๋ชป ๋˜์—ˆ์ง€๋งŒ(์•„๋งˆ๋„ ์—ฌ์ „ํžˆ ๊ทธ๋Ÿด ์ˆ˜ ์žˆ์Œ) ์˜ฌ๋ฐ”๋ฅธ ์†”๋ฃจ์…˜์ด ๊ฒŒ์‹œ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ํ”„๋กœ๋•์…˜์—์„œ ๋ฌธ์ œ ์—†์ด 2์„ธ๋Œ€ Cloud SQL์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์ด์— ๋Œ€ํ•œ ํ•ด๊ฒฐ์ฑ…์ด ์žˆ์Šต๋‹ˆ๊นŒ? CloudSQL 2์„ธ๋Œ€์—์„œ๋Š” ํ™•์‹คํžˆ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

@bagatelli ๋‹น์‹  ์œ„์˜ ๋‚ด ์˜๊ฒฌ์„ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค

@benguild ์—ฌ๋Ÿฌ ๊ณณ์—์„œ ๊ท€ํ•˜์˜ ์˜๊ฒฌ์„ ๋ณด์•˜์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋ชจ๋“  ์‚ฌ๋žŒ์ด ํ•ด๋‹น๋˜์ง€ ์•Š๋Š” ์—ฐ๊ฒฐ์—์„œ ๋ชจ๋“  ์‚ฌ๋žŒ์ด SSL์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค. ๋ฌผ๋ก  ๊ทธ๊ฒƒ์€ ๋‚ด ๊ฒƒ์ด ์•„๋‹™๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ๋ฐ›๋Š” ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€๋Š” "๋“œ๋ผ์ด๋ฒ„: ์ž˜๋ชป๋œ ์—ฐ๊ฒฐ"์ž…๋‹ˆ๋‹ค. ๋“œ๋ผ์ด๋ฒ„๊ฐ€ ์—ฐ๊ฒฐ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์ œ๋Œ€๋กœ ์‹๋ณ„ํ•  ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋„๋‹ฌํ•˜์ง€๋„ ์•Š์Šต๋‹ˆ๋‹ค. ์ œ ์ƒ๊ฐ์—๋Š” ๋ฌธ์ œ๊ฐ€ "new appengine" ๋ฐ "old appengine" ํŒจํ‚ค์ง€์™€ ๊ด€๋ จ๋œ ํ˜ผ๋ž€์˜ ์–ด๋”˜๊ฐ€์— ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

@bagatelli ๋ช…ํ™•ํžˆ ํ•˜๊ธฐ ์œ„ํ•ด ์ด ์ฃผ์„์— ์–ธ๊ธ‰๋œ ์—ฐ๊ฒฐ ๋ฌธ์ž์—ด ํ˜•์‹์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š”์ง€ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค. http://stackoverflow.com/questions/38890022/tls-requested-but-server-does-not-support-tls-error- with-google-cloud-sql-2nd#comment65140499_38890022

์ด์ „์˜ ๊ฐ„๊ฒฐํ•จ์— ๋Œ€ํ•ด ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ๋ฌธ์ œ ์—†์ด Go on App Engine์˜ ํ”„๋กœ๋•์…˜์—์„œ 2์„ธ๋Œ€๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. SQL ํ”„๋ก์‹œ๊ฐ€ ์ถ”๊ฐ€ํ•  ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— "tlsConfigName" ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์ƒ๋žตํ•˜์‹ญ์‹œ์˜ค. ๊ทธ๋Ÿฌ๋‚˜ ์–ด๋Š ์ชฝ์ด๋“  ์ด์ œ TLS๊ฐ€ ์ง€์›๋œ๋‹ค๊ณ  ๋ณด๊ณ ํ•ฉ๋‹ˆ๋‹ค.

@๋ฒต๊ธธ๋“œ . ์ด ๋ชจ๋“  ๋ฌธ์ œ์— ๋Œ€ํ•ด ์ €๋ฅผ ๋„์™€์ฃผ์‹  ๋ชจ๋“  ๋…ธ๋ ฅ์— ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค.
"new appengine" ๋˜๋Š” "old appengine"์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ? ๋‚˜๋Š” ๋ฐฉ๊ธˆ ๋ชจ๋“  ์ฝ”๋“œ๋ฅผ ์ƒˆ๋กœ์šด appengine ํŒจํ‚ค์ง€์ธ ์ด ์ƒˆ๋กœ์šด ์•…๋ชฝ์œผ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๋ฐ ํ•˜๋ฃจ๋ฅผ ๋ณด๋ƒˆ์Šต๋‹ˆ๋‹ค. ๋‚ด ๋‹ค๋ฅธ ๊ฒŒ์‹œ๋ฌผ์—์„œ ์•Œ ์ˆ˜ ์žˆ๋“ฏ์ด ๋” ์ด์ƒ ๋‚ด ์ฝ”๋“œ๋ฅผ ๋ฐฐํฌํ•  ์ˆ˜ ์—†์œผ๋ฏ€๋กœ ์œ„์—์„œ ์ œ์•ˆํ•œ ๊ฒƒ์„ ์ œ๋Œ€๋กœ ํ…Œ์ŠคํŠธํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. . ๋‚ด ์•ฑ์„ ๋ฐฐํฌํ•  ์†”๋ฃจ์…˜์„ ์ฐพ๋Š” ์ฆ‰์‹œ ๋‹ค์‹œ ์‹œ๋„ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.
๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!

@bagatelli ๋ฐฐํฌํ•˜๋Š” ๋ฐ ๋ฌธ์ œ๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ ์ฝ”๋“œ๋ฅผ VM์œผ๋กœ ๊ฐ€์ ธ์˜ค๊ฑฐ๋‚˜ Google Cloud Console์„ ์‚ฌ์šฉํ•ด ๋ณด์„ธ์š”.

@bagatelli ๋‚ด๊ฐ€ ๋งํ•œ ๊ฒƒ์€ ... ์ƒˆ๋กœ์šด ์‹œ์Šคํ…œ์—์„œ ์‹œ๋„ํ•˜๊ฑฐ๋‚˜ ํ™˜๊ฒฝ๊ณผ ๊ด€๋ จ์ด ์—†๋‹ค๋Š” ์‚ฌ์‹ค์„ ์“ฐ๊ธฐ ์ „์— ํด๋ผ์šฐ๋“œ ์ฝ˜์†”(๊ฐœ๋ฐœ ๋„๊ตฌ๊ฐ€ ์ด๋ฏธ ์žˆ์Œ)์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

ํ˜„์žฌ 4๊ฐœ์›”๋œ ๋ฒ„๊ทธ๋กœ ์ธํ•ด macOS Sierra๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐฐํฌํ•  ์ˆ˜ ์—†์ง€๋งŒ VM์—์„œ๋Š” ๋ฌธ์ œ ์—†์ด ๋ฐฐํฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ๋‹น์‹ ์ด ํ™˜๊ฒฝ์—์„œ ์™„์ „ํžˆ ๋ฒ—์–ด๋‚˜๋Š” ๊ฒƒ์ด ๋” ๋งŽ์€ ์ผ์ด๋ผ๊ณ  ํ™•์‹ ํ•˜๋ฏ€๋กœ ์™„์ „ํžˆ ๊ทธ๋งŒ๋‘๊ธฐ ์ „์— ์ ์–ด๋„ ๊ทธ๊ฒƒ์„ ๋ฐฐ์ œํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@pjebs . ์ด ๊ฐ€์ •์„ ์–ด๋””์—์„œ ์–ป์—ˆ๋Š”์ง€ ํ™•์‹คํ•˜์ง€ ์•Š์ง€๋งŒ ์œ ์—ฐํ•œ ํ™˜๊ฒฝ์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

@pjebs ๊ทธ๊ฑด ํ‹€๋ฆฝ๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ํ˜„์žฌ ํ‘œ์ค€์— ๋ฐฐํฌํ•˜๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.

@pjebs appcfg.py update ๋„ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

@bagatelli ์ž˜ ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. ์ €๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ์ œ3์ž ์ข…์†์„ฑ๊ณผ API ์ข…์†์„ฑ์„ ์ตœ์†Œํ™”ํ•˜๋Š” ๊ฒฝํ–ฅ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋ง์”€ํ•˜์‹  ๋‚ด์šฉ์ด ์‚ฌ์‹ค์ด๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค... Google์€ ์ง€์›์„ ์ œ๊ณตํ•  ์˜๋ฌด๊ฐ€ ์—†์ง€๋งŒ ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ํ‰ํŒ์ด ์œ„ํ—˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ˜„์žฌ ๊ท€ํ•˜์—๊ฒŒ ์ •ํ™•ํžˆ ์–ด๋–ค ๋ฌธ์ œ๊ฐ€ ์žˆ๋Š”์ง€ ์ž˜ ๋ชจ๋ฅด๊ฒ ์ง€๋งŒ(์ด์ „ API๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ ์™ธ์—๋Š”?) ์ œ๊ฐ€ App Engine์šฉ์œผ๋กœ ๊ฐœ๋ฐœํ•œ ๋ชจ๋“  ์†Œํ”„ํŠธ์›จ์–ด๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒฝ์šฐ App Engine์—์„œ ๋ฒ—์–ด๋‚  ์˜๋„๋กœ ๊ฐœ๋ฐœํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ํ•„์š”ํ•  ๋•Œ. ์˜ˆ๋ฅผ ๋“ค์–ด, ๋‚ด๊ฐ€ ์ธํ„ฐํŽ˜์ด์Šคํ•˜๋Š” ๋ชจ๋“  Google API์— ๋Œ€ํ•ด ์‹ค์ œ๋กœ ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜๊ณ  ๋‚˜๋จธ์ง€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ์ž์ฒด์ ์œผ๋กœ ์ œ๊ณตํ•˜๋Š” "๋„์šฐ๋ฏธ"๋ฅผ ์ž‘์„ฑํ•˜์—ฌ ํ•„์š”ํ•  ๋•Œ๋งŒ ์ƒˆ ํ™˜๊ฒฝ์— ๋งž๊ฒŒ ์กฐ์ •ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ๋ฐ”๋ผ๊ฑด๋Œ€] ๋‚˜๋จธ์ง€ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์„ ์†์ƒ์‹œํ‚ค์ง€ ์•Š๊ณ .

์ €์—๊ฒŒ App Engine์€ ํ™•์žฅ ๋ฐ ํ™˜๊ฒฝ ์„ค์ • ์™ธ์— ์•ฝ๊ฐ„์˜ ๊ตฌ์„ฑ์ด ํ•„์š”ํ•˜๊ณ  ๋ช‡ ๊ฐ€์ง€ ํ›Œ๋ฅญํ•œ API๋ฅผ ์ œ๊ณตํ•˜๋Š” ํ™˜๊ฒฝ์ด๊ธฐ ๋•Œ๋ฌธ์— ๋” ํŽธ๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ์„ฑ๊ฐ€์‹  ์ผ์ด์ง€๋งŒ ๊ท€ํ•˜๊ฐ€ ๋งํ•˜๋Š” ๊ฒƒ๊ณผ ๊ฐ™์€ ๋ฌธ์ œ๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ ํ”„๋ฆฌ๋ฏธ์—„ ์ง€์›์„ ์ œ๊ณตํ•ฉ๋‹ˆ๊นŒ?

@pjebs. ๋‚ด๊ฐ€ ์•„๋Š” ํ•œ goapp์€ appcfg.py์˜ ๋ž˜ํผ์ผ ๋ฟ์ž…๋‹ˆ๋‹ค. ์–ด๋Š ์‹œ์ ์—์„œ appcfg.py๋ฅผ ํ˜ธ์ถœํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

@bagatelli ๋„ค, ์ด๋ฉ”์ผ์„ ๋ณด๋‚ด์ฃผ์„ธ์š”. ๊ดœ์ฐฎ์•„์š”

@๋ฒต๊ธธ๋“œ . ๋งˆ์นจ๋‚ด ๋‚ด ์•ฑ์„ ๋ฐฐํฌํ•  ์ˆ˜ ์žˆ์—ˆ์ง€๋งŒ ์—ฌ์ „ํžˆ CloudSQL์— ์—ฐ๊ฒฐํ•˜๋Š” ๋ฐ ์šด์ด ์—†์Šต๋‹ˆ๋‹ค.
"new appengine" ํŒจํ‚ค์ง€๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  mysql-driver ํŒจํ‚ค์ง€์˜ "appengine.go"์—์„œ google.golang.org/appengine/clousql๋กœ clousql ๊ฐ€์ ธ์˜ค๊ธฐ๋ฅผ ์„ค์ •ํ•˜๋„๋ก ์ „์ฒด ์•ฑ์„ ์—…๋ฐ์ดํŠธํ–ˆ์Šต๋‹ˆ๋‹ค.
๊ทธ๋Ÿฐ ๋‹ค์Œ CloudSQL ์ œ์–ดํŒ์—์„œ ํด๋ผ์ด์–ธํŠธ ์ธ์ฆ์„œ๋ฅผ ์ƒ์„ฑํ•˜๊ณ  stackoverflow์˜ ๊ฒŒ์‹œ๋ฌผ์— ๋ช…์‹œ๋œ ๋Œ€๋กœ tls ๊ตฌ์„ฑ์„ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ œ๊ณตํ•˜๋Š” ๋“œ๋ผ์ด๋ฒ„ ์„ค๋ช…์„œ์— ์„ค๋ช…๋œ ๋Œ€๋กœ RegisterTLSConfig๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ทธ์— ๋”ฐ๋ผ ์ฝ”๋“œ๋ฅผ ์—…๋ฐ์ดํŠธํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‚ด URL ์—ฐ๊ฒฐ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

root:password@cloudsql (instance-connection-name-copied-from-cloud-console)/myDatabase?tls=customTls

์—ฌ์ „ํžˆ ์šด์ด ์—†์Šต๋‹ˆ๋‹ค. ์˜ค๋ฅ˜:

๋“œ๋ผ์ด๋ฒ„: ์ž˜๋ชป๋œ ์—ฐ๊ฒฐ

@arnehormann . ์ด๊ฒƒ์€ ์œ„์˜ ๊ฒŒ์‹œ๋ฌผ์—์„œ ๊ท€ํ•˜์˜ ์งˆ๋ฌธ์— ๋Œ€ํ•œ ๋‹ต๋ณ€์ž…๋‹ˆ๋‹ค.

@bagatelli TLS ์—†์ด ์‚ฌ์šฉํ•ด ๋ณด์„ธ์š”.

@๋ฒต๊ธธ๋“œ . tls ์—†์ด ์‹œ๋„ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ถˆ์šด.

๋“œ๋ผ์ด๋ฒ„: ์ž˜๋ชป๋œ ์—ฐ๊ฒฐ

@pjebs . ์—ฌ๊ธฐ์—์„œ ๋ฌธ์ œ๋ฅผ ์™„์ „ํžˆ ์ดํ•ดํ–ˆ๋Š”์ง€ ํ™•์‹คํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋“œ๋ผ์ด๋ฒ„๊ฐ€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋„๋‹ฌํ•˜์ง€๋„ ์•Š์Šต๋‹ˆ๋‹ค. ์œ„์—์„œ ์–ธ๊ธ‰ํ•œ ๋‚ด์šฉ์ด ํ”„๋กœ๋•์…˜ ํ™˜๊ฒฝ์—์„œ ์‚ฌ์‹ค์ผ ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์ดํ•ดํ•˜์ง€๋งŒ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋Œ€ํ•œ ๋‹จ์ผ ์—ฐ๊ฒฐ๋„ ์„ค์ •ํ•  ์ˆ˜ ์—†์œผ๋ฏ€๋กœ ์ œ ๊ฒฝ์šฐ์—๋Š” ์œ„์˜ ๋‚ด์šฉ์ด ์ „ํ˜€ ์ ์šฉ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

@bagatelli ๋‚ด๊ฐ€ ํ•œ ๊ฒƒ์ฒ˜๋Ÿผ ์Šคํƒ ์˜ค๋ฒ„ํ”Œ๋กœ์— ๊ฒŒ์‹œํ•˜๊ณ  google-cloud-sql ... Google์˜ ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ์‘๋‹ตํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ ๋™์ผํ•œ ๋ฌธ์ œ๊ฐ€ ์žˆ๋Š” ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์„ ์œ„ํ•ด ์ƒ‰์ธ์„ ์ƒ์„ฑํ•˜๊ธฐ๋ฅผ ์›ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ผ๋‹จ ํ•ด๊ฒฐ๋œ ์งˆ๋ฌธ์— ๋Œ€ํ•œ ๋งํฌ์™€ ํ•จ๊ป˜ ์—ฌ๊ธฐ์— ๋‹ค์‹œ ์‘๋‹ตํ•˜์‹ญ์‹œ์˜ค.

๋‚ด๊ฐ€ ๋งํ–ˆ๋“ฏ์ด ์‚ฌ๋žŒ๋“ค์ด ํ”„๋กœ๋•์…˜ ํ™˜๊ฒฝ์—์„œ 2์„ธ๋Œ€๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๊ณ  ๋ฒ ํƒ€ ๋ฒ„์ „์ด ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ์— ์—ฌ์ „ํžˆ ๊ตฌํ˜„๊ณผ ๊ด€๋ จ์ด ์žˆ์„ ๊ฐ€๋Šฅ์„ฑ์ด ํฝ๋‹ˆ๋‹ค.

@bagatelli Cloud Console์—์„œ ์ธ์Šคํ„ด์Šค์˜ 'TLS ํ•„์ˆ˜' ์„ค์ •์„ ๋„๋Š” ๊ฒƒ์„ ๊ธฐ์–ตํ•˜์…จ๋‚˜์š”?

@benguild ์™€ @pjebs ์—๊ฒŒ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค. SO์— ๊ฒŒ์‹œํ•˜๊ณ  ์›์ธ์„ ์ฐพ์œผ๋ฉด ์—ฌ๊ธฐ์— ์—…๋ฐ์ดํŠธ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

@๋ฒต๊ธธ๋“œ . Cloud Console์—์„œ TLS์— ๋Œ€ํ•œ ์–ธ๊ธ‰์„ ๋ณผ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

"SSL ์—ฐ๊ฒฐ๋งŒ ํ—ˆ์šฉ"์„ ์˜๋ฏธํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ๋‹น์‹ ์ด ๋งํ•˜๋Š” ๊ฒƒ์ด๋ผ๋ฉด ์˜ˆ, ๊บผ์ ธ ์žˆ์Šต๋‹ˆ๋‹ค.

์•Œ๊ฒ ์Šต๋‹ˆ๋‹ค. ๋ฌธ์ œ๋ฅผ ์ฐพ์•˜์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ทธ๊ฒƒ์€ ๋“œ๋ผ์ด๋ฒ„๋„, ๋‚ด ์•ฑ๋„, CloudSQL๋„ ์•„๋‹ˆ์—ˆ์Šต๋‹ˆ๋‹ค. ์•ฑ์„ ๋ฐฐํฌํ•˜๋Š” ํ”„๋กœ์ ํŠธ๋Š” ๋ช‡ ๋…„ ์ „์— ์ด์ „ ๊ฐœ๋ฐœ์ž ์ฝ˜์†”์„ ํ†ตํ•ด ์ƒ์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
Cloud Console์˜ ์•ก์„ธ์Šค ์ œ์–ด ํƒญ์—๋Š” "์ด ํ”„๋กœ์ ํŠธ์˜ ์•ฑ: ๋ชจ๋‘ ์Šน์ธ๋จ"์ด๋ผ๋Š” ๋ ˆ์ด๋ธ”์ด ์žˆ์Šต๋‹ˆ๋‹ค. ํ”„๋กœ์ ํŠธ๊ฐ€ ์ƒ์„ฑ๋˜๋ฉด ๊ธฐ๋ณธ appengine ๋ฐ ์ปดํ“จํŒ… ์—”์ง„ ๊ณ„์ •๋„ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค. ๋ฌธ์ œ๋Š” ์ด ํŠน์ • ํ”„๋กœ์ ํŠธ์— ๊ธฐ๋ณธ ๊ณ„์ •์ด ๋‘˜ ๋‹ค ์—†์—ˆ๊ณ  ๊ทธ๊ฒƒ์ด ๋ฌธ์ œ๋ผ๊ณ  ํ™•์‹ ํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์•„๋งˆ๋„ Google์€ IAM ๋ฐ ๊ด€๋ฆฌ์ž๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์•ก์„ธ์Šค ๊ณ„์ •์„ ๊ด€๋ฆฌํ•˜๋Š” ํด๋ผ์šฐ๋“œ ์ฝ˜์†”๋กœ appengine์„ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•  ๋•Œ ํ•ด๋‹น ๊ณ„์ •์„ ์ƒ์„ฑํ•˜์ง€ ์•Š์•˜์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.
๊ธฐ๋ณธ ๊ณ„์ •์ด ๋ˆ„๋ฝ๋œ ๊ฒƒ์„ ๋ฐœ๊ฒฌํ–ˆ์„ ๋•Œ ์ƒˆ ํ”„๋กœ์ ํŠธ์™€ ์ƒˆ ํด๋ผ์šฐ๋“œ 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 ๋“ฑ๊ธ‰