ํ‹ฐ์Šคํ† ๋ฆฌ ๋ทฐ

๐Ÿ 

๊ธฐ์กด์— ์˜ค๋ผํด๋กœ ํ™ˆ์„œ๋ฒ„๋ฅผ ๋งŒ๋“ค์—ˆ์—ˆ๋‹ค. ์š”๊ธฐ

AWS๋กœ ํ™˜๊ฒฝ์„ ๋ณ€๊ฒฝํ•˜๋ฉด์„œ MySQL๋กœ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์„ ํ•˜๊ฒŒ ๋ผ์„œ MySQL๋กœ ํ™ˆ์„œ๋ฒ„๋ฅผ ๊ตฌ์ถ•ํ–ˆ๋‹ค.

 

์ฒ˜์Œ์—๋Š” ์˜ค๋ผํด ํ™˜๊ฒฝ์ฒ˜๋Ÿผ ๊ณต์œ ๊ธฐ ํฌํŠธํฌ์›Œ๋”ฉ์œผ๋กœ MySQL์˜ 3306 ํฌํŠธ๋ฅผ ์™ธ๋ถ€์— ๊ณต๊ฐœํ•˜๋ ค ํ–ˆ์ง€๋งŒ

์ด๋ฒˆ์—๋Š” Tailscale์ด๋ž€ ์‹ ์„ธ๊ณ„๋ฅผ ์ ‘ํ•˜๊ฒŒ ๋˜์–ด Tailscale์„ ์‚ฌ์šฉํ•ด ๊ตฌ์ถ•ํ–ˆ๋‹ค.

 

๐Ÿ’ญ
Tailscale์„ ์ด์šฉํ•˜๋ฉด ์ธํ„ฐ๋„ท ์ƒ์— ํฌํŠธ๋ฅผ ๊ณต๊ฐœํ•˜์ง€ ์•Š๊ณ  ํŒ€์›๋งŒ ์•ˆ์ „ํ•˜๊ฒŒ ์ ‘์†ํ•  ์ˆ˜ ์žˆ๋‹ค.
ํŒ€์›์€ ๋‚ด ์ปดํ“จํ„ฐ์˜ ๊ณต์ธ IP๋‚˜ ๊ณต์œ ๊ธฐ ๋‚ด๋ถ€ IP๋กœ ์ ‘์†ํ•˜์ง€ ์•Š๊ณ  Tailscale์ด ๋ฐœ๊ธ‰ํ•œ 100.x.x.x ํ˜•ํƒœ์˜ ์ „์šฉ IP๋กœ MySQL์— ์ ‘์†ํ•œ๋‹ค.

Tailscale์„ ์‚ฌ์šฉํ•˜๋ฉด ๊ณต์ธ IP๊ฐ€ ๋ณ€๊ฒฝ๋˜์–ด๋„ ์˜ํ–ฅ์„ ๋ฐ›์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— IP๊ฐ€ ๋ณ€๊ฒฝ๋  ๊ฑฑ์ •์„ ํ•˜์ง€ ์•Š์•„๋„ ๋œ๋‹ค!

 


 

MySQL ์™ธ๋ถ€ ์ ‘์† ํ—ˆ์šฉํ•˜๊ธฐ

ํŒ€์›์ด ์ ‘์†ํ•˜๋ ค๋ฉด MySQL์ด ์™ธ๋ถ€ ๋„คํŠธ์›Œํฌ ์ธํ„ฐํŽ˜์ด์Šค์—์„œ๋„ ์—ฐ๊ฒฐ์„ ๋ฐ›๋„๋ก ์„ค์ •ํ•ด์•ผ ํ•œ๋‹ค.

C:\ProgramData\MySQL\MySQL Server 8.4\my.ini

MySQL ์„ค์ • ํŒŒ์ผ์€ ์ผ๋ฐ˜์ ์œผ๋กœ ์œ„์™€ ๊ฐ™์€ ์œ„์น˜์— ์žˆ๊ณ  ProgramData๋Š” ์ˆจ๊น€ ํด๋”๋‹ค.

my.ini๋ฅผ ๊ด€๋ฆฌ์ž ๊ถŒํ•œ์œผ๋กœ ์—ด๊ณ  [mysqld] ๋ถ€๋ถ„์˜ bind-address๋ฅผ 0.0.0.0์œผ๋กœ ์ˆ˜์ •ํ•œ๋‹ค.

 

[mysqld]
bind-address=0.0.0.0
port=3306

bind-address๊ฐ€ 127.0.0.1์œผ๋กœ ๋˜์–ด์žˆ๋‹ค๋ฉด ๋‹ค๋ฅธ PC์—์„œ๋Š” ์ ‘์†ํ•  ์ˆ˜ ์—†๊ณ  ๋กœ์ปฌ ์—ฐ๊ฒฐ๋งŒ ํ—ˆ์šฉํ•œ๋‹ค.

์„ค์ •์„ ์ˆ˜์ •ํ–ˆ๋‹ค๋ฉด PowerShell์— ์•„๋ž˜ ๋ช…๋ น์–ด๋ฅผ ์ž…๋ ฅํ•œ๋‹ค.

 

Restart-Service MySQL84

1. MySQL ์„œ๋น„์Šค๋ฅผ ์žฌ์‹œ์ž‘ํ•œ๋‹ค. 

 

Get-NetTCPConnection -LocalPort 3306 -State Listen

2. ์ •์ƒ์ ์œผ๋กœ ํฌํŠธ๋ฅผ ์—ด๊ณ ์žˆ๋Š”์ง€ ํ™•์ธํ•œ๋‹ค.

 

์œ„์ฒ˜๋Ÿผ ๋‚˜์˜ค๋ฉด ์ •์ƒ์ด๋‹ค.

127.0.0.1:3306๋งŒ ๋‚˜์˜จ๋‹ค๋ฉด my.ini ์„ค์ •์„ ๋‹ค์‹œ ํ™•์ธํ•ด์•ผ ํ•œ๋‹ค.

 

 

ํ”„๋กœ์ ํŠธ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ƒ์„ฑํ•˜๊ธฐ

๋จผ์ € MySQL ํ™˜๊ฒฝ๋ณ€์ˆ˜๋ฅผ ๋“ฑ๋กํ•˜์ง€ ์•Š์•˜๋‹ค๋ฉด ๋“ฑ๋กํ•ด์ค€๋‹ค.

๋”๋ณด๊ธฐ

๊ฒฝ๋กœ: C:\Program Files\MySQL\MySQL Server 8.4\bin


 

 

MySQL ๊ด€๋ฆฌ์ž ๊ณ„์ •์œผ๋กœ ์ ‘์†ํ•œ๋‹ค.

mysql -u root -p

๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์ž…๋ ฅํ•  ๋•Œ PowerShell ํ™”๋ฉด์—๋Š” ์•„๋ฌด๊ฒƒ๋„ ํ‘œ์‹œ๋˜์ง€ ์•Š๋Š”๋‹ค.

์ž…๋ ฅ์ด ์•ˆ ๋˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์—ฌ๋„ ์‹ค์ œ๋กœ๋Š” ์ž…๋ ฅ๋˜๊ณ  ์žˆ์œผ๋ฏ€๋กœ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์ž…๋ ฅํ•˜๊ณ  Enter๋ฅผ ๋ˆ„๋ฅด๋ฉด ๋œ๋‹ค.

 

์ด๋ฒˆ ํ”„๋กœ์ ํŠธ์—์„œ ์‚ฌ์šฉํ•  ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.

CREATE DATABASE ํ”„๋กœ์ ํŠธ๋ช…
    CHARACTER SET utf8mb4
    COLLATE utf8mb4_0900_ai_ci;

์ƒ์„ฑ๋œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ํ™•์ธํ•œ๋‹ค.

SHOW DATABASES;

 

 

์™ธ๋ถ€ ์ ‘์†์šฉ ๊ณ„์ • ๋งŒ๋“ค๊ธฐ

ํŒ€์›์ด ์ ‘์†ํ•  ๋•Œ root ๊ณ„์ •์„ ์‚ฌ์šฉํ•˜๋ฉด ์•ˆ ๋œ๋‹ค.

root๋Š” ์„œ๋ฒ„ ์ „์ฒด๋ฅผ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ฌธ์ œ๊ฐ€ ์ƒ๊ฒผ์„ ๋•Œ ํ”ผํ•ด ๋ฒ”์œ„๊ฐ€ ๋„ˆ๋ฌด ํฌ๋‹ค.

๋”ฐ๋ผ์„œ ํŒ€์›๋ณ„๋กœ ๋ณ„๋„์˜ ๊ณ„์ •์„ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.

 

CREATE USER 'gildong'@'100.90.30.40'
IDENTIFIED BY '๊ธธ๊ณ -๋ณต์žกํ•œ-๊ฐœ๋ณ„๋น„๋ฐ€๋ฒˆํ˜ธ';

gildong ์—๋Š” ํŒ€์› ์ด๋ฆ„์ด๋‚˜ ๋‹‰๋„ค์ž„์„, @๋’ค ๋ถ€๋ถ„์—” ํŒ€์›์˜ IP๋ฅผ ์ž…๋ ฅํ•˜๋ฉด ๋œ๋‹ค.

 

์•„์ง ํŒ€์›์˜ Tailscale IP๋ฅผ ๋ชจ๋ฅด๋Š” ์ƒํƒœ๋ผ๋ฉด ๋‹ค์Œ์ฒ˜๋Ÿผ ๊ณ„์ •์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค.

CREATE USER 'team_user'@'%'
IDENTIFIED BY '๊ธธ๊ณ -๋ณต์žกํ•œ-๋น„๋ฐ€๋ฒˆํ˜ธ';

'team_user'@'%'๋Š” ๋ชจ๋“  IP์—์„œ ํ•ด๋‹น ๊ณ„์ •์œผ๋กœ ๋กœ๊ทธ์ธํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์˜๋ฏธ๋‹ค.

 

ํŒ€์›์—๊ฒŒ ํ•„์š”ํ•œ ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•œ๋‹ค.

GRANT SELECT, INSERT, UPDATE, DELETE,
      CREATE, ALTER, INDEX, REFERENCES
ON ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ช….*
TO 'gildong'@'100.90.30.40';

FLUSH PRIVILEGES;

๊ฐœ๋ฐœ ์ค‘ ํ…Œ์ด๋ธ” ์‚ญ์ œ๊ฐ€ ํ•„์š”ํ•˜๋‹ค๋ฉด DROP ๊ถŒํ•œ์„ ์ถ”๊ฐ€ํ•œ๋‹ค.

GRANT DROP
ON ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ช….*
TO 'gildong'@'100.90.30.40';

 

์•„๋ž˜ ๋ช…๋ น์–ด๋ฅผ ์ž…๋ ฅํ•ด ๋งˆ๋ฌด๋ฆฌ.

FLUSH PRIVILEGES;

 

๋“ฑ๋ก๋œ ์‚ฌ์šฉ์ž์™€ ์ ‘์† ํ—ˆ์šฉ ์ฃผ์†Œ๋Š” ๋‹ค์Œ ์ฟผ๋ฆฌ๋กœ ํ™•์ธํ•œ๋‹ค.

SELECT User, Host
FROM mysql.user;

 

 

Tailscale ์„ค์น˜ํ•˜๊ธฐ

Tailscale์€ ์—ฌ๋Ÿฌ ์ปดํ“จํ„ฐ๋ฅผ ํ•˜๋‚˜์˜ ์‚ฌ์„ค ๋„คํŠธ์›Œํฌ์ฒ˜๋Ÿผ ์—ฐ๊ฒฐํ•ด์ฃผ๋Š” VPN ์„œ๋น„์Šค๋‹ค.

Tailscale ๋‹ค์šด๋กœ๋“œ

 

MySQL ํ™ˆ์„œ๋ฒ„๋กœ ์‚ฌ์šฉํ•  ๋‚ด ์ปดํ“จํ„ฐ์™€ ํŒ€์› ์ปดํ“จํ„ฐ์— ๋ชจ๋‘ Tailscale์„ ์„ค์น˜ํ•ด ๊ฐ์ž ๊ณ„์ •์„ ๋งŒ๋“ค์–ด ๋กœ๊ทธ์ธํ•œ๋‹ค.

๋‚ด ํ™ˆ์„œ๋ฒ„์˜ Tailscale IP๋Š” ๋‹ค์Œ ๋ช…๋ น์–ด๋กœ ํ™•์ธํ•œ๋‹ค.

tailscale ip -4

๋ช…๋ น์–ด๋ฅผ ์ž…๋ ฅํ•˜๋ฉด ๋‚˜์˜ค๋Š” ์ฃผ์†Œ๊ฐ€ ํŒ€์›์ด MySQL์— ์ ‘์†ํ•  ๋•Œ ์‚ฌ์šฉํ•  ํ˜ธ์ŠคํŠธ ์ฃผ์†Œ๋‹ค.

 

 

ํŒ€์›์—๊ฒŒ ํ™ˆ์„œ๋ฒ„ ์žฅ์น˜ ๊ณต์œ ํ•˜๊ธฐ

๋จผ์ € Tailscale ๊ด€๋ฆฌ์ž ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•œ๋‹ค.

Tailscale Machines ๊ด€๋ฆฌ ํŽ˜์ด์ง€

 

๋‹ค์Œ ์ˆœ์„œ๋กœ ๊ณต์œ ํ•œ๋‹ค.

1. MySQL์ด ์„ค์น˜๋œ ํ™ˆ์„œ๋ฒ„ ์ปดํ“จํ„ฐ๋ฅผ ์ฐพ๋Š”๋‹ค.
2. ์˜ค๋ฅธ์ชฝ์˜ โ‹ฏ ๋ฒ„ํŠผ์„ hoverํ•˜๋ฉด ๋…ธ์ถœ๋˜๋Š” Share๋ฅผ ์„ ํƒ
3. ํŒ€์›์˜ ์ด๋ฉ”์ผ์„ ์ž…๋ ฅํ•˜๊ณ  ์ดˆ๋Œ€๋ฅผ ์ „์†กํ•œ๋‹ค.
4. ํŒ€์›์ด ์ด๋ฉ”์ผ๋กœ ๋ฐ›์€ ์ดˆ๋Œ€๋ฅผ ์ˆ˜๋ฝํ•œ๋‹ค.

์žฅ์น˜ ๊ณต์œ  ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜๋ฉด ํŒ€์›์—๊ฒŒ ๋‚ด Tailscale ๋„คํŠธ์›Œํฌ ์ „์ฒด๊ฐ€ ๋…ธ์ถœ๋˜์ง€ ์•Š๊ณ  ๊ณต์œ ํ•œ ํ™ˆ์„œ๋ฒ„ ํ•œ ๋Œ€์—๋งŒ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค.

ํŒ€์›์ด ์—ฌ๋Ÿฌ ๋ช…์ด๋ผ๋ฉด ์ด๋ฉ”์ผ๋กœ ๊ฐ๊ฐ ์ดˆ๋Œ€ํ•˜๋Š” ๊ฒƒ์ด ์•ˆ์ „ํ•˜๋‹ค. 

 

 

Windows ๋ฐฉํ™”๋ฒฝ์—์„œ MySQL ํ—ˆ์šฉํ•˜๊ธฐ

Tailscale ์—ฐ๊ฒฐ์ด ๋˜์–ด ์žˆ์–ด๋„ Windows ๋ฐฉํ™”๋ฒฝ์ด 3306 ํฌํŠธ๋ฅผ ๋ง‰๊ณ  ์žˆ์œผ๋ฉด ํŒ€์›์€ MySQL์— ์ ‘์†ํ•  ์ˆ˜ ์—†๋‹ค.

ํŒ€์› ์ปดํ“จํ„ฐ์—์„œ ๋‹ค์Œ ๋ช…๋ น์–ด๋กœ Tailscale IP๋ฅผ ํ™•์ธํ•œ๋‹ค.

tailscale ip -4

 

ํŒ€์› IP๊ฐ€ 100.x.x.x ์ด๋ผ๋ฉด ๋‚ด ํ™ˆ์„œ๋ฒ„์˜ ๊ด€๋ฆฌ์ž PowerShell์—์„œ ํ•ด๋‹น IP๋งŒ ํ—ˆ์šฉํ•œ๋‹ค.

New-NetFirewallRule `
  -DisplayName "MySQL - ํŒ€์› ํ™๊ธธ๋™" `
  -Direction Inbound `
  -Protocol TCP `
  -LocalPort 3306 `
  -RemoteAddress 100.x.x.x `
  -Action Allow

ํŒ€์›์ด ์—ฌ๋Ÿฌ ๋ช…์ด๋ผ๋ฉด ํŒ€์›๋ณ„๋กœ ๊ทœ์น™์„ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด ๊ด€๋ฆฌํ•˜๊ธฐ ํŽธํ•˜๋‹ค.

 

๋“ฑ๋ก๋œ MySQL ๋ฐฉํ™”๋ฒฝ ๊ทœ์น™์€ ๋‹ค์Œ ๋ช…๋ น์–ด๋กœ ํ™•์ธํ•œ๋‹ค.

Get-NetFirewallRule |
  Where-Object DisplayName -Like "*MySQL*" |
  Format-Table DisplayName, Enabled, Direction, Action

 

 

ํŒ€์› ์ปดํ“จํ„ฐ์—์„œ ์—ฐ๊ฒฐ ํ…Œ์ŠคํŠธํ•˜๊ธฐ

ํŒ€์›์ด DBeaver๋ฅผ ๋ฐ”๋กœ ์‹คํ–‰ํ•˜๊ธฐ ์ „์— Tailscale ์—ฐ๊ฒฐ๋ถ€ํ„ฐ ํ™•์ธํ•ด์•ผ ํ•œ๋‹ค.

ํŒ€์› ์ปดํ“จํ„ฐ์—์„œ ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•œ๋‹ค.

tailscale status

๋ชฉ๋ก์— ๊ณต์œ ๋ฐ›์€ ํ™ˆ์„œ๋ฒ„๊ฐ€ ๋ณด์—ฌ์•ผ ํ•œ๋‹ค.

 

๊ทธ๋‹ค์Œ Tailscale ์ „์šฉ ping์„ ์‹คํ–‰ํ•œ๋‹ค.

tailscale ping 100.x.x.x

์—ฌ๊ธฐ์„œ ์ž…๋ ฅํ•˜๋Š” IP๋Š” ๋ฐ˜๋“œ์‹œ ๋‚ด ํ™ˆ์„œ๋ฒ„์˜ Tailscale IP์—ฌ์•ผ ํ•œ๋‹ค.

 

๋งˆ์ง€๋ง‰์œผ๋กœ MySQL 3306 ํฌํŠธ์— ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ํ™•์ธํ•œ๋‹ค.

Test-NetConnection 100.x.x.x -Port 3306

 

์ •์ƒ์ด๋ผ๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํ‘œ์‹œ๋œ๋‹ค.

TcpTestSucceeded : True

 

 

 

DBeaver์—์„œ ํ™ˆ์„œ๋ฒ„ MySQL ์—ฐ๊ฒฐํ•˜๊ธฐ

ํŒ€์›์€ DBeaver์—์„œ MySQL ์—ฐ๊ฒฐ์„ ์ถ”๊ฐ€ํ•˜๊ณ  ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์„ค์ •ํ•œ๋‹ค.

DB ์ข…๋ฅ˜: MySQL
Host: ๋‚ด ํ™ˆ์„œ๋ฒ„์˜ Tailscale IP
Port: 3306
Database: ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ช…
Username: ํŒ€์› ์ „์šฉ ๊ณ„์ •
Password: ํŒ€์› ์ „์šฉ ๋น„๋ฐ€๋ฒˆํ˜ธ

Test Connection์„ ๋ˆŒ๋Ÿฌ ์—ฐ๊ฒฐ์„ ํ™•์ธํ•œ๋‹ค.

 

Spring Boot์—์„œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.

spring:
  datasource:
    url: jdbc:mysql://100.x.x.x:3306/๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ช…?serverTimezone=Asia/Seoul&characterEncoding=UTF-8
    username: gildong
    password: ${DB_PASSWORD}
    driver-class-name: com.mysql.cj.jdbc.Driver

 

 

โš ๏ธ TcpTestSucceeded : False๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๋•Œ

ํŒ€์›์ด ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ–ˆ๋Š”๋ฐ ์‹คํŒจํ•  ์ˆ˜ ์žˆ๋‹ค.

Test-NetConnection 100.x.x.x -Port 3306
TcpTestSucceeded : False

์ด ์˜ค๋ฅ˜๋Š” ์•„์ง MySQL ๊ณ„์ •์ด๋‚˜ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ํ™•์ธํ•˜๋Š” ๋‹จ๊ณ„๊นŒ์ง€ ๋„๋‹ฌํ•˜์ง€ ๋ชปํ–ˆ๋‹ค๋Š” ๋œป์ด๋‹ค. ๋ณดํ†ต ๋‹ค์Œ ์ค‘ ํ•˜๋‚˜๊ฐ€ ์›์ธ์ด๋‹ค.

  • ์ž˜๋ชป๋œ IP๋ฅผ ์ž…๋ ฅํ–ˆ๋‹ค.
  • Tailscale ์—ฐ๊ฒฐ์ด ๋Š๊ฒจ ์žˆ๋‹ค.
  • ์žฅ์น˜ ๊ณต์œ  ์ดˆ๋Œ€๋ฅผ ์ˆ˜๋ฝํ•˜์ง€ ์•Š์•˜๋‹ค.
  • MySQL ์„œ๋น„์Šค๊ฐ€ ์ค‘์ง€๋˜์–ด ์žˆ๋‹ค.
  • MySQL์ด 127.0.0.1์—์„œ๋งŒ ์—ฐ๊ฒฐ์„ ๋ฐ›๊ณ  ์žˆ๋‹ค.
  • Windows ๋ฐฉํ™”๋ฒฝ์ด 3306 ํฌํŠธ๋ฅผ ์ฐจ๋‹จํ•˜๊ณ  ์žˆ๋‹ค.

๋จผ์ € ํŒ€์› ์ปดํ“จํ„ฐ์—์„œ ํ™•์ธํ•œ๋‹ค.

tailscale status
tailscale ping ๋‚ด_ํ™ˆ์„œ๋ฒ„_Tailscale_IP
Test-NetConnection ๋‚ด_ํ™ˆ์„œ๋ฒ„_Tailscale_IP -Port 3306

 

ํŒ๋‹จ ๋ฐฉ๋ฒ•์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

tailscale ping ์‹คํŒจ
→ Tailscale ๋กœ๊ทธ์ธ ๋˜๋Š” ์žฅ์น˜ ๊ณต์œ  ๋ฌธ์ œ๋‹ค.

tailscale ping ์„ฑ๊ณต + 3306 ์‹คํŒจ
→ MySQL ๋ฆฌ์Šค๋‹ ๋˜๋Š” Windows ๋ฐฉํ™”๋ฒฝ ๋ฌธ์ œ๋‹ค.

3306 ์„ฑ๊ณต + DBeaver ์‹คํŒจ
→ MySQL ๊ณ„์ •, Host, ๊ถŒํ•œ ๋˜๋Š” ๋น„๋ฐ€๋ฒˆํ˜ธ ๋ฌธ์ œ๋‹ค.

 

๋‚ด ํ™ˆ์„œ๋ฒ„์—์„œ๋Š” ๋‹ค์Œ ํ•ญ๋ชฉ์„ ํ™•์ธํ•œ๋‹ค.

tailscale ip -4
Get-Service -Name "MySQL*"
Get-NetTCPConnection -LocalPort 3306 -State Listen
Test-NetConnection ๋‚ด_Tailscale_IP -Port 3306

LocalAddress๊ฐ€ 127.0.0.1์ด๋ผ๋ฉด my.ini์˜ bind-address ์„ค์ •์„ ๋‹ค์‹œ ํ™•์ธํ•ด์•ผ ํ•œ๋‹ค.

 

 

โš ๏ธTailscale์—์„œ ๋กœ๊ทธ์•„์›ƒ ๋˜๋Š” Expired๊ฐ€ ๋œฐ ๋•Œ

ํŒ€์›์ด Tailscale์—์„œ Logged out, Expired ๋˜๋Š” ์žฌ์ธ์ฆ ๊ด€๋ จ ๋ฉ”์‹œ์ง€๋ฅผ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

Tailscale์€ ๋ณด์•ˆ์„ ์œ„ํ•ด ๊ฐ ์žฅ์น˜์˜ ์ธ์ฆ ํ‚ค๋ฅผ ์ฃผ๊ธฐ์ ์œผ๋กœ ๋งŒ๋ฃŒ์‹œํ‚จ๋‹ค.

์ธ์ฆ ํ‚ค๊ฐ€ ๋งŒ๋ฃŒ๋˜๋ฉด ํ•ด๋‹น ์ปดํ“จํ„ฐ๋Š” Tailscale ๋„คํŠธ์›Œํฌ์—์„œ ์—ฐ๊ฒฐ์ด ๋Š๊ธฐ๊ณ  MySQL์—๋„ ์ ‘์†ํ•  ์ˆ˜ ์—†๋‹ค.

 

์ด ๊ฒฝ์šฐ ํŒ€์›์€ Tailscale ์•ฑ์„ ์—ด๊ณ  ๋‹ค์‹œ ๋กœ๊ทธ์ธํ•˜๋ฉด ๋œ๋‹ค.

PowerShell์—์„œ๋Š” ๋‹ค์Œ ๋ช…๋ น์–ด๋กœ ๊ฐ•์ œ ์žฌ์ธ์ฆํ•  ์ˆ˜ ์žˆ๋‹ค.

tailscale up --force-reauth

 

๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์—ด๋ฆฌ๋ฉด ๊ธฐ์กด์— ์žฅ์น˜ ๊ณต์œ  ์ดˆ๋Œ€๋ฅผ ์ˆ˜๋ฝํ–ˆ๋˜ ๋™์ผํ•œ ๊ณ„์ •์œผ๋กœ ๋กœ๊ทธ์ธํ•œ๋‹ค.

์žฌ์ธ์ฆ ํ›„ ๋‹ค์Œ ๋ช…๋ น์–ด๋กœ ์ƒํƒœ๋ฅผ ํ™•์ธํ•œ๋‹ค.

tailscale status
tailscale ip -4

 

๊ทธ๋‹ค์Œ ๋‹ค์‹œ ํ…Œ์ŠคํŠธํ•œ๋‹ค.

tailscale ping ๋‚ด_ํ™ˆ์„œ๋ฒ„_Tailscale_IP
Test-NetConnection ๋‚ด_ํ™ˆ์„œ๋ฒ„_Tailscale_IP -Port 3306

 

์žฌ๋กœ๊ทธ์ธ ํ›„ ํŒ€์›์˜ Tailscale IP๊ฐ€ ๋ณ€๊ฒฝ๋๋‹ค๋ฉด Windows ๋ฐฉํ™”๋ฒฝ๊ณผ MySQL ์‚ฌ์šฉ์ž์— ๋“ฑ๋กํ•œ ๊ธฐ์กด IP๋„ ์ˆ˜์ •ํ•ด์•ผ ํ•œ๋‹ค.

๋‚ด ํ™ˆ์„œ๋ฒ„๋Š” ํ•ญ์ƒ ์ ‘์† ๊ฐ€๋Šฅํ•ด์•ผ ํ•˜๋ฏ€๋กœ ์ธ์ฆ ํ‚ค ๋งŒ๋ฃŒ๋ฅผ ๋น„ํ™œ์„ฑํ™”ํ•  ์ˆ˜ ์žˆ๋‹ค.

1. Tailscale Machines ๊ด€๋ฆฌ ํŽ˜์ด์ง€์— ์ ‘์†ํ•œ๋‹ค.
2. ํ™ˆ์„œ๋ฒ„ ์˜ค๋ฅธ์ชฝ์˜ โ‹ฏ ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅธ๋‹ค.
3. Disable Key Expiry๋ฅผ ์„ ํƒํ•œ๋‹ค.

 

ํŒ€์› ๊ฐœ์ธ ์ปดํ“จํ„ฐ๋Š” ๋ณด์•ˆ์„ ์œ„ํ•ด ์ธ์ฆ ๋งŒ๋ฃŒ๋ฅผ ์œ ์ง€ํ•˜๊ณ , ๋งŒ๋ฃŒ๋์„ ๋•Œ ๋‹ค์‹œ ๋กœ๊ทธ์ธํ•˜๋Š” ํŽธ์ด ์ข‹๋‹ค.

 

 

 

โœ… ๋ณด์•ˆ์„ ์œ„ํ•ด ๊ผญ ์ง€์ผœ์•ผ ํ•  ๊ฒƒ

ํ™ˆ์„œ๋ฒ„๋Š” ํŽธ๋ฆฌํ•˜์ง€๋งŒ ์„ค์ •์„ ์ž˜๋ชปํ•˜๋ฉด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ์™ธ๋ถ€ ๊ณต๊ฒฉ์— ๋…ธ์ถœ๋  ์ˆ˜ ์žˆ๋‹ค.

์ตœ์†Œํ•œ ๋‹ค์Œ ์›์น™์€ ์ง€ํ‚ค๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.

- ๊ณต์œ ๊ธฐ์—์„œ 3306 ํฌํŠธ๋ฅผ ์ธํ„ฐ๋„ท์— ํฌํŠธํฌ์›Œ๋”ฉํ•˜์ง€ ์•Š๋Š”๋‹ค.
- ์™ธ๋ถ€ ์ ‘์†์— root ๊ณ„์ •์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค.
- ํŒ€์›๋ณ„๋กœ MySQL ๊ณ„์ •์„ ๋”ฐ๋กœ ๋งŒ๋“ ๋‹ค.
- ๊ณ„์ •์—๋Š” ํ”„๋กœ์ ํŠธ DB์— ํ•„์š”ํ•œ ๊ถŒํ•œ๋งŒ ๋ถ€์—ฌํ•œ๋‹ค.
- ํŒ€์›๋งˆ๋‹ค ์„œ๋กœ ๋‹ค๋ฅธ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.
- Windows ๋ฐฉํ™”๋ฒฝ ์ „์ฒด๋ฅผ ๋„์ง€ ์•Š๋Š”๋‹ค.
- Tailscale IP ๋˜๋Š” Tailscale ๋Œ€์—ญ์—์„œ๋งŒ 3306์„ ํ—ˆ์šฉํ•œ๋‹ค.
- ํ”„๋กœ์ ํŠธ์—์„œ ๋น ์ง„ ํŒ€์›์˜ Tailscale ๊ณต์œ ์™€ MySQL ๊ณ„์ •์„ ์ œ๊ฑฐํ•œ๋‹ค.
- DB ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ Git ์ €์žฅ์†Œ์— ์ปค๋ฐ‹ํ•˜์ง€ ์•Š๋Š”๋‹ค.
- ์ค‘์š”ํ•œ ๋ฐ์ดํ„ฐ๋Š” ์ •๊ธฐ์ ์œผ๋กœ ๋ฐฑ์—…ํ•œ๋‹ค.

 

 

๐Ÿ’ญ ๋งˆ๋ฌด๋ฆฌ

์ฒ˜์Œ์—๋Š” MySQL ํ™ˆ์„œ๋ฒ„๋ฅผ ๋งŒ๋“ค๋ ค๋ฉด ๊ณต์ธ IP, ํฌํŠธํฌ์›Œ๋”ฉ, ๊ณต์œ ๊ธฐ ์„ค์ • ๋“ฑ ๋ณต์žกํ•œ ๊ณผ์ •์ด ํ•„์š”ํ•  ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ–ˆ๋‹ค.

ํ•˜์ง€๋งŒ Tailscale์„ ์‚ฌ์šฉํ•˜๋‹ˆ ๊ณต์œ ๊ธฐ ์„ค์ • ์—†์ด ๋‚ด ์ปดํ“จํ„ฐ์™€ ํŒ€์› ์ปดํ“จํ„ฐ๋ฅผ ํ•˜๋‚˜์˜ ์‚ฌ์„ค ๋„คํŠธ์›Œํฌ์ฒ˜๋Ÿผ ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค.

์˜ค๋ผํด์— ๋น„ํ•ด ๋„ˆ๋ฌด๋‚˜ ๊ฐ„๋‹จํ•˜๊ณ  ์‹ ๊ธฐํ•ด์„œ ์‹ ์„ธ๊ณ„์˜€๋‹ค.

MySQL์˜ 3306 ํฌํŠธ๋ฅผ ์ธํ„ฐ๋„ท ์ „์ฒด์— ๊ณต๊ฐœํ•˜์ง€ ์•Š์•„๋„ ๋œ๋‹ค๋Š” ์ ๋„ ๋งˆ์Œ์— ๋“ค์—ˆ๋‹ค.

 

๋น„์šฉ ๋ถ€๋‹ด ์—†์ด ์‚ฌ์ด๋“œ ํ”„๋กœ์ ํŠธ์šฉ ๊ณต์šฉ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ํ•„์š”ํ•˜๋‹ค๋ฉด MySQL๊ณผ Tailscale์„ ์กฐํ•ฉํ•œ ํ™ˆ์„œ๋ฒ„๋„ ์ถฉ๋ถ„ํžˆ ๊ดœ์ฐฎ์€ ์„ ํƒ์ด๋‹ค. ์šฐ๋ฆฌ๋Š” ๋ฐฐํฌ๋ฅผ ์œ„ํ•ด ๊ฒฐ๊ตญ AWS๋กœ ๋‹ค์‹œ ์ด๊ด€ํ–ˆ์ง€๋งŒ...