๐Ÿค– Backend

์ด์ „ Velog์˜ NCP Server์— pem key๋กœ ssh ์ ‘์†ํ•˜๊ธฐ - Permission denied (publickey) (2023.12.07) ๋กœ๋ถ€ํ„ฐ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜๋œ ๊ธ€์ž…๋‹ˆ๋‹ค. ๋™๊ธฐAWS์—์„œ๋Š” SSH๋ฅผ ๊ถŒ์žฅํ•˜์ง€ ์•Š๊ณ  AWS Session Manager๋ฅผ ์“ฐ๋„๋ก ๊ถŒ์žฅํ•˜์ง€๋งŒ, CI/CD ํŒŒ์ดํ”„๋ผ์ธ์„ ๊ตฌ์ถ•ํ•˜๊ณ  ๋‚˜์„œ ์„œ๋ฒ„์— ์ ‘์†ํ•˜๋Š” ๊ฒฝ์šฐ๋Š” ๋Œ€๊ฒŒ ๊ธด๊ธ‰ํ•œ ๊ฒฝ์šฐ๋ผ AWS ๋กœ๊ทธ์ธ โžก MFA โžก EC2 Console โžก Session Manager... ๋Ž์Šค๊ฐ€ ๋„ˆ๋ฌด ๊นŠ์–ด์„œ ๊ท€์ฐฎ๋‹ค...๊ทธ๋ž˜์„œ ๊ทธ๋‚˜๋งˆ SSH๋ฅผ ์•ˆ์ „ํ•˜๊ฒŒ ๊ด€๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•์€1. 22๋ฒˆ ์™ธ์˜ ํฌํŠธ๋ฅผ SSH ์šฉ์œผ๋กœ ์‚ฌ์šฉํ•˜๊ณ 2. SSH Authentication์„ ์ฒ ์ €ํžˆ ์„ค์ •ํ•œ๋‹ค.2 ๋ฒˆ์˜ ๊ฒฝ์šฐ ๋Œ€๊ฒŒ pem key๋ฅผ ๋งŽ์ด ์‚ฌ์šฉํ•˜๋Š”๋ฐ, NCP Server์˜ SSH ..
๋ฌธ์ œ ํŒŒ์•… ๋ณดํ†ต ์Šคํ”„๋ง์„ ๋””๋ฒ„๊น…ํ•  ๋•Œ SQL ์ฟผ๋ฆฌ ๋กœ๊ทธ๋ฅผ ํ™•์ธํ•˜๋Š” ์„ ์—์„œ ๋๋‚˜์ง€๋งŒ, ์ข…์ข… DataSource๋‚˜ DDL ์ด ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๊ฑฐ๋‚˜ ์˜ˆ์ƒํ•˜์ง€ ๋ชปํ•œ ๊ฐ’์ด DB์—์„œ ๊ด€์ธก๋  ๋•Œ๋Š” SQL ์ฟผ๋ฆฌ์— ํฌํ•จ๋œ ๊ฐ’์„ ํ™•์ธํ•  ํ•„์š”๊ฐ€ ์žˆ๋‹ค. ํ•˜์ง€๋งŒ ์šฐ๋ฆฌ๋Š” Hibernate ORM์„ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— SQL ์ฟผ๋ฆฌ์—๋Š” ๋ฐ”์ธ๋”ฉ๋˜๊ธฐ ์ „์˜ ์ฟผ๋ฆฌ๋งŒ ๋ณผ ์ˆ˜ ์žˆ๋‹ค. ์ด๋•Œ ํ•„์š”ํ•œ ๊ฒƒ์ด binding parmater๋ฅผ ์ถ”์ ํ•˜๋Š” ๊ฒƒ์ธ๋ฐ, ์ฒ˜์Œ ์Šคํ”„๋ง์„ ๋ฐฐ์šธ ๋•Œ ๋ฐฐ์šด ๋ฐฉ๋ฒ•์ด ์ž‘๋™ํ•˜์ง€ ์•Š์•˜๋‹ค. (application.properties) logging: level: org: hibernate: type: trace ์ด์ „์— ์ง„ํ–‰ํ•œ ํ”„๋กœ์ ํŠธ์—์„œ ๋˜‘๊ฐ™์ด ์‹คํ–‰ํ•˜๋ฉด ์ •์ƒ์ ์œผ๋กœ ์‹คํ–‰๋œ๋‹ค. ํŠธ๋Ÿฌ๋ธ” ์ŠˆํŒ… ๋ฌธ์ œ ์›์ธ ๋ถ„์„ ํ˜„ ํ”„๋กœ์ ํŠธ์™€ ์ด์ „ ํ”„๋กœ์ ํŠธ ์ฐจ์ด๋ผ..
@DataJpaTest๋ฅผ ์ด์šฉํ•œ Repository ํ…Œ์ŠคํŠธ ์ค‘ ๋ณธ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ์‹คํ–‰์—์„œ ๋ฐœ์ƒํ•˜์ง€ ์•Š๋˜ DDL์—์„œ ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ–ˆ๋‹ค. H2 ↔๏ธ MySQL ๋ฌธ๋ฒ• ์ฐจ์ด๋กœ ์ธํ•ด ํ…Œ์ด๋ธ”์ด ์ œ๋Œ€๋กœ ์ƒ์„ฑ๋˜์ง€ ์•Š๋Š” ๊ฒƒ์œผ๋กœ ๋ณด์—ฌ์„œ application-test.properties ๋ฅผ ๊ณ„์† ์ˆ˜์ •ํ–ˆ์ง€๋งŒ ํ•ด๊ฒฐ๋˜์ง€ ์•Š์•˜๋‹ค. ๋ฌธ๋“, ์ง€๋‚œ ๋ฒˆ์—๋„ @DataJpaTest ํ…Œ์ŠคํŠธ์—์„œ ๋ฐœ์ƒํ•˜๋Š” ์—๋Ÿฌ๋ฅผ @AutoConfigureTestDatabase์œผ๋กœ ํ•ด๊ฒฐํ•œ ๊ธฐ์–ต์ด๋‚˜์„œ ์‹œ๋„ํ•˜์˜€๊ณ  ํ•ด๊ฒฐ๋˜์—ˆ๋‹ค. ๊ทธ๋•Œ๋„ ๋””๋ฒ„๊น… ๊ณผ์ • ๊ธฐ๋ก์„ ๋ฏธ๋ค„๋‘๊ณ  ์žˆ์—ˆ๋Š”๋ฐ, ์ด ์ฐธ์— ๋ธ”๋กœ๊น…ํ•˜๊ณ  ์žฅ๊ธฐ ๊ธฐ์–ต์œผ๋กœ ๊ฐ€๋ณด์ž. ๋ฌธ์ œ ๋ถ„์„ ์‹œ๋„ํ•  ๋•Œ๋งˆ๋‹ค ๋‹ค์–‘ํ•œ ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•˜๊ณ  ์ธํ„ฐ๋„ท์—๋„ ๋‹ค์–‘ํ•œ ์˜ˆ์™ธ ์ผ€์ด์Šค๊ฐ€ ์žˆ๋Š”๋ฐ, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„ค์ • ๋ฌธ์ œ์ด๊ฑฐ๋‚˜ DDL ํ˜น์€ SQL ๋ฌธ๋ฒ• ์˜ค๋ฅ˜๋‹ค. ๊ณตํ†ต์ ..
๋‹ค ๋ชจ๋ฅด๊ฒ ๊ณ , ๊ฐ€์žฅ ์ด์ƒ์ ์ธ ์•„ํ‚คํ…์ฒ˜๋งŒ ๋ณด๊ณ  ์‹ถ์€ ์‚ฌ๋žŒ์€ ํ˜„์‹ค์ ์ธ ์†Œ๊ทœ๋ชจ ์•„ํ‚คํ…์ฒ˜ ์„น์…˜์„ ๋ณด๋ฉด ๋œ๋‹ค. ํผ๋ธ”๋ฆญ ํด๋ผ์šฐ๋“œ๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ์˜์–ด๋กœ ํ•˜๋“  ํ•œ๊ตญ์–ด๋กœ ํ•˜๋“  ๊ธฐ๋Šฅ ์ดํ•ดํ•˜๊ธฐ๋„ ์–ด๋ ต๊ณ  ๊ฐ€์ด๋“œ๊ฐ€ ๋ณต์žกํ•˜๋”๋ผ๋„ AWS ์‚ฌ์šฉํ•˜๋Š”๋ฐ๋Š” ์—ฌ๋Ÿฌ๊ฐ€์ง€๊ฐ€ ์ด์œ ๊ฐ€ ์žˆ๋‹ค. ๋งŽ์€ ํšŒ์‚ฌ๊ฐ€ AWS๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์–ด์„œ ๊ฒฝํ—˜์‹ถ์€ ๊ฒƒ๋„ ์žˆ์ง€๋งŒ, ํ•™์ƒ์œผ๋กœ์„œ ๊ฐ€๊ฒฉ์ด ํฐ ์ด์œ ์˜€๋‹ค. AWS์—๋Š” ์ˆ˜ ๋งŽ์€ ์„œ๋น„์Šค๋“ค์ด ์กด์žฌํ•˜๊ณ  ์™„๋ฒฝํ•œ ์•„ํ‚คํ…์ฒ˜๋ฅผ ๊ตฌ์„ฑํ•˜๊ธฐ ์œ„ํ•ด ๋งŽ์€ ๊ธฐ๋Šฅ๋“ค์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋‹ค. ํ•˜์ง€๋งŒ ์˜์™ธ๋กœ ์ผ๋ถ€ ์„œ๋น„์Šค๋ฅผ ์ œ์™ธํ•˜๊ณ ๋Š” ํ•ฉ๋ฆฌ์ ์ธ ๊ฐ€๊ฒฉ์ด๊ฑฐ๋‚˜ ์ผ์ • ๋ฒ”์œ„ ๋‚ด์—์„œ ๋ฌด๋ฃŒ์ธ ๊ฒฝ์šฐ๊ฐ€ ๋งŽ๋‹ค. NCP ์•„ํ‚คํ…์ฒ˜ NCP๋Š” ํ•œ๊ตญ ํด๋ผ์šฐ๋“œ์ด๊ธฐ๋„ ํ•˜๊ณ  ํ›„๋ฐœ์ฃผ์ž๋ผ ๊ทธ๋Ÿฐ์ง€ ๋ฌธ์„œํ™”๊ฐ€ ๊ต‰์žฅํžˆ ์ž˜ ๋˜์–ด์žˆ๋‹ค. ๊ฐ€๋” AWS์˜ ํ•œ๊ตญ ๋„ํ๋จผํŠธ๋ฅผ ๋ณด๋ฉด ํ•œ๊ตญ์–ด๋ฅผ ์ฝ๊ณ  ์žˆ๋Š”๋ฐ๋„ ์ดํ•ด๊ฐ€ ์•ˆ๋˜๊ณ ..
๋””ํ”„๋งŒ 14๊ธฐ์—์„œ ์ฐธ์—ฌ ์ค‘์ธ ํ”„๋กœ์ ํŠธ์—์„œ ๋ฐฑ์—”๋“œ ๋ฆฌ๋“œ ๋ถ„์ด ์—”ํ‹ฐํ‹ฐ์˜ id๋ฅผ UUID, ULID๋กœ ์„ค์ •ํ•œ ๊ฒƒ์„ ๋ณด์•˜๋‹ค. ๋Š˜ IDENTITY๋กœ ์„ค์ •ํ•˜์—ฌ MySQL์ด AUTO_INCREMENT๋กœ ๊ด€๋ฆฌํ•˜๋„๋ก ์œ„์ž„ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ธฐ์กด ๋ฐฉ์‹๊ณผ ๋Œ€๋น„ํ•ด์„œ ์–ด๋–ค ์žฅ์ ์ด ์žˆ๊ธธ๋ž˜ ์‚ฌ์šฉํ•˜๋Š”์ง€ ์•Œ์•„๋ณด์•˜๋‹ค. AUTO_INCREMENT ์ „๋žต์˜ ๋‹จ์  ์™ธ๋ถ€์—์„œ ์˜ˆ์ธกํ•˜๊ธฐ ์‰ฌ์šด PK PK๊ฐ€ ์„ ํ˜•์ ์œผ๋กœ ์ฆ๊ฐ€ํ•˜๋Š” ์ •์ˆ˜์ด๊ธฐ ๋•Œ๋ฌธ์—, ํŠน์ • ๋ฐ์ดํ„ฐ์˜ PK๋ฅผ ์˜ˆ์ธกํ•˜๊ธฐ ์‰ฌ์›Œ์ง„๋‹ค. ์‹ค์ œ๋กœ request๋“ค์˜ ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ํ…Œ์ŠคํŠธํ•  ๋•Œ ์ข…์ข… ๋Š๊ผˆ๋˜ ๊ฒƒ์ด๋‹ค. ํ˜„์žฌ ์œ ์ €์˜ id 2000์ด๋ฉด 1 ~ 1999๊นŒ์ง€์˜ id๋ฅผ ๊ฐ€์ง„ ์œ ์ €๊ฐ€ ์กด์žฌํ•  ํ™•๋ฅ ๋„ ๋†’์€ ๊ฒƒ์ด๋‹ค. ์ด๋Š” ๋‹จ์ˆœํžˆ ๋…ธ์ถœ๋œ๋‹ค์˜ ๋ฌธ์ œ๋ฅผ ๋„˜์–ด SQL Injection ๊ณต๊ฒฉ์—๋„ ์ทจ์•ฝํ•ด์ง„๋‹ค. DB์— ์˜์กด์ ์ธ PK ๊ฐœ๋ฐœ..
์‚ฌ์‹ค ๋ฐฑ์—”๋“œ ๊ณต๋ถ€๋ฅผ ํ•˜๋ฉด์„œ ์ธํ”„๋ผ ๋‹จ์—์„œ๋งŒ ๋ณด์•ˆ๊ณผ ํ•ดํ‚น ๋ฐฉ์–ด๋ฅผ ์กฐ์‹ฌํ–ˆ์ง€๋งŒ, ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋‹จ์—์„œ์˜ ๋ณด์•ˆ์€ ํฌ๊ฒŒ ์•Œ์•„๋ณธ ์ ์€ ์—†์—ˆ๋˜ ๊ฒƒ ๊ฐ™๋‹ค. ํ”„๋ ˆ์ž„์›Œํฌ์—์„œ ๊ธฐ๋ณธ์ ์ธ ์„ค์ •์€ ์ „๋ถ€ ๋˜์–ด ์žˆ์–ด์˜€์ง€๋งŒ, ์•Œ๊ณ  ์žˆ์ง€๋งŒ ์•ˆํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์•„์˜ˆ ๋ชจ๋ฅด๋Š” ๊ฒƒ์€ ๋ฌธ์ œ๊ฐ€ ๋  ์ˆ˜ ์žˆ์„ ๊ฒƒ ๊ฐ™๋‹ค. ์ตœ๊ทผ ์ฐธ์—ฌํ•œ ๋ชจ ๊ธฐ์—…์˜ ์ฑ„์šฉ ํ•„๊ธฐ ํ…Œ์ŠคํŠธ์—์„œ ์ด์™€ ๊ด€๋ จ๋œ ๋ฌธ์ œ๊ฐ€ ๋‚˜์™”์—ˆ๊ณ , ์ตœ๊ทผ ์ง„ํ–‰ ์ค‘์ธ ํ”„๋กœ์ ํŠธ์—์„œ ์„œ๋ฒ„ ๋ฆฌ๋“œ๊ฐ€ UUID/ULID๋ฅผ DB PK๋กœ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์„ ๋ณด๊ณ  ์ฐพ์•„๋ณด๋˜ ์ค‘ ์ด์™€ ์—ฐ๊ด€๋˜์–ด ํ•œ ๋ฒˆ ์ •๋ฆฌํ•ด๋ณด๊ณ ์ž ํ•œ๋‹ค. SQL Injection ์›Œ๋‚™ ์œ ๋ช…ํ•ด ๋‹ค๋“ค ํ•œ ๋ฒˆ์ฏค์€ ๋“ค์–ด๋ดค์„ํ…๋ฐ, ์ž„์˜์˜ SQL๋ฌธ์„ ์ฃผ์ž…ํ•˜๊ณ  ์‹คํ–‰๋˜๊ฒŒ ํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ๋น„์ •์ƒ์ ์ธ ๋™์ž‘์„ ํ•˜๋„๋ก ์กฐ์ž‘ํ•˜๋Š” ํ–‰์œ„์ด๋‹ค. ๋‹ค์–‘ํ•œ ๊ณต๊ฒฉ๋ฒ•์ด ์žˆ์ง€๋งŒ, ๊ฐ€์žฅ ๋Œ€ํ‘œ์ ์ธ Error..
Install $ sudo apt update && sudo apt-get -y upgrade $ sudo apt-get install -y mariadb-server $ sudo mysql Configuration Environment setting $ sudo mysql mysql> use mysql mysql> SHOW VARIABLES LIKE 'c%'; (utf8 OR utf8mb4) mysql> SELECT now(); (KST ์ด์—ฌ์•ผํ•จ) mysql> exit; $ sudo timedatectl set-timezone 'Asia/Seoul' $ date $ sudo service mysql restart User setting $ sudo mysql mysql> use mysql; mysql..
sckwon770
'๐Ÿค– Backend' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๊ธ€ ๋ชฉ๋ก (3 Page)