Home > DB > πŸ’Ύ[Database] λ°μ΄ν„°λ² μ΄μŠ€ URLμ΄λž€ λ¬΄μ—‡μΌκΉŒμš”?

πŸ’Ύ[Database] λ°μ΄ν„°λ² μ΄μŠ€ URLμ΄λž€ λ¬΄μ—‡μΌκΉŒμš”?
Database

πŸ’Ύ[Database] λ°μ΄ν„°λ² μ΄μŠ€ URLμ΄λž€ λ¬΄μ—‡μΌκΉŒμš”?

  • λ°μ΄ν„°λ² μ΄μŠ€ URL은 μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ΄ λ°μ΄ν„°λ² μ΄μŠ€μ— μ—°κ²°ν•  λ•Œ μ‚¬μš©λ˜λŠ” κ³ μœ ν•œ μ£Όμ†Œμž…λ‹ˆλ‹€.
  • URL은 μ• ν”Œλ¦¬μΌ€μ‹œμ—°μ΄ λ°μ΄ν„°λ² μ΄μŠ€ μ„œλ²„λ₯Ό μ°Ύκ³ , μ—°κ²°ν•  λ°μ΄ν„°λ² μ΄μŠ€λ₯Ό μ§€μ •ν•˜κΈ° μœ„ν•œ 정보λ₯Ό ν¬ν•¨ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€.
  • 이 URL은 λ°μ΄ν„°λ² μ΄μŠ€ μ’…λ₯˜μ— 따라 κ³ μœ ν•œ ν˜•μ‹μœΌλ‘œ μž‘μ„±λ˜λ©°, 보톡 ν”„λ‘œν† μ½œ, μ„œλ²„ μœ„μΉ˜(호슀트), 포트 번호, λ°μ΄ν„°λ² μ΄μŠ€ 이름 등을 ν¬ν•¨ν•©λ‹ˆλ‹€.

1️⃣ λ°μ΄ν„°λ² μ΄μŠ€ URL의 κΈ°λ³Έ ν˜•μ‹.

  • λ°μ΄ν„°λ² μ΄μŠ€ URL은 보톡 λ‹€μŒκ³Ό 같은 ν˜•μ‹μ„ λ”°λ¦…λ‹ˆλ‹€.
jdbc:<λ°μ΄ν„°λ² μ΄μŠ€ μœ ν˜•>://<호슀트>:<포트>/<λ°μ΄ν„°λ² μ΄μŠ€ 이름>?<μ˜΅μ…˜λ“€>
  • 각 λΆ€λΆ„μ˜ μ˜λ―ΈλŠ” λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.
    • jdbc
      • Java Database Connectivity의 μ•½μžλ‘œ, JDBC URLμž„μ„ λ‚˜νƒ€λƒ…λ‹ˆλ‹€.
      • JDBC(Java Database Connectivity)λ₯Ό μ‚¬μš©ν•˜μ—¬ λ°μ΄ν„°λ² μ΄μŠ€μ™€ μ—°κ²°ν•˜λŠ” ν‘œμ€€ λ°©μ‹μž…λ‹ˆλ‹€.
    • <λ°μ΄ν„°λ² μ΄μŠ€ μœ ν˜•>
      • μ‚¬μš©ν•˜λŠ” λ°μ΄ν„°λ² μ΄μŠ€μ˜ μœ ν˜•μ„ λ‚˜νƒ€λƒ…λ‹ˆλ‹€.
        • 예λ₯Ό λ“€μ–΄, MySQL, PostgreSQL, Oracle, SQL Server 등이 여기에 λ“€μ–΄κ°‘λ‹ˆλ‹€.
    • <호슀트>
      • λ°μ΄ν„°λ² μ΄μŠ€κ°€ μ‹€ν–‰λ˜κ³  μžˆλŠ” μ„œλ²„μ˜ μ£Όμ†Œλ₯Ό λ‚˜νƒ€λƒ…λ‹ˆλ‹€.
        • λ‘œμ»¬μ—μ„œ 싀행될 경우 localhostλ₯Ό μ‚¬μš©ν•˜κ³ , 원격 μ„œλ²„μ˜ 경우 μ„œλ²„ IP μ£Όμ†Œλ‚˜ 도메인 이름을 μ‚¬μš©ν•©λ‹ˆλ‹€.
    • <포트>
      • λ°μ΄ν„°λ² μ΄μŠ€ μ„œλ²„κ°€ μˆ˜μ‹  λŒ€κΈ° 쀑인 λ„€νŠΈμ›Œν¬ 포트 λ²ˆν˜Έμž…λ‹ˆλ‹€.
        • 각 λ°μ΄ν„°λ² μ΄μŠ€λŠ” κΈ°λ³Έ ν¬νŠΈκ°€ μžˆμ§€λ§Œ, ν•„μš”μ— 따라 λ‹€λ₯Έ 포트λ₯Ό μ‚¬μš©ν•  μˆ˜λ„ μžˆμŠ΅λ‹ˆλ‹€.
          • MySQL: 3306
          • PostgreSQL: 5432
          • Oracle: 1521
    • <λ°μ΄ν„°λ² μ΄μŠ€ 이름>
      • μ—°κ²°ν•  λ°μ΄ν„°λ² μ΄μŠ€μ˜ μ΄λ¦„μž…λ‹ˆλ‹€.
        • 같은 λ°μ΄ν„°λ² μ΄μŠ€ μ„œλ²„μ—μ„œ μ—¬λŸ¬ λ°μ΄ν„°λ² μ΄μŠ€λ₯Ό μš΄μ˜ν•  수 μžˆμœΌλ―€λ‘œ, μ—°κ²°ν•  λ°μ΄ν„°λ² μ΄μŠ€λ₯Ό λͺ…μ‹œν•©λ‹ˆλ‹€.
    • <μ˜΅μ…˜λ“€>
      • μΆ”κ°€μ μœΌλ‘œ λ°μ΄ν„°λ² μ΄μŠ€ 연결을 μœ„ν•œ μ˜΅μ…˜μ„ 전달할 수 μžˆμŠ΅λ‹ˆλ‹€.
        • 예λ₯Ό λ“€μ–΄, 인코딩 λ°©μ‹μ΄λ‚˜ SSL μ‚¬μš© μ—¬λΆ€ λ“±μ˜ 섀정이 여기에 포함될 수 μžˆμŠ΅λ‹ˆλ‹€.

πŸ“ SSL(Secure Socket Layer)

λ„€νŠΈμ›Œν¬ μƒμ—μ„œ 데이터λ₯Ό μ•ˆμ „ν•˜κ²Œ μ•”ν˜Έν™”ν•˜μ—¬ μ „μ†‘ν•˜κΈ° μœ„ν•œ λ³΄μ•ˆ ν”„λ‘œν† μ½œμž…λ‹ˆλ‹€.
SSL은 ν΄λΌμ΄μ–ΈνŠΈμ™€ μ„œλ²„ κ°„μ˜ 톡신을 μ•”ν˜Έν™”ν•˜μ—¬, 데이터가 μ „μ†‘λ˜λŠ” λ™μ•ˆ 제3μžκ°€ 이λ₯Ό λ„μ²­ν•˜κ±°λ‚˜ μœ„μ‘°ν•˜μ§€ λͺ»ν•˜λ„둝 λ³΄ν˜Έν•©λ‹ˆλ‹€.
SSL은 특히 μ›Ή λΈŒλΌμš°μ €μ™€ μ›Ή μ„œλ²„ κ°„μ˜ μ•ˆμ „ν•œ 톡신을 보μž₯ν•˜λŠ” 데 널리 μ‚¬μš©λ˜μ—ˆμŠ΅λ‹ˆλ‹€.

ν˜„μž¬λŠ” SSL의 후속 버전인 TLS(Transport Layer Security)κ°€ SSL을 λŒ€μ²΄ν•˜μ—¬ μ‚¬μš©λ˜κ³  μžˆμ§€λ§Œ, 보톡 μ‚¬λžŒλ“€μ€ μ—¬μ „νžˆ SSLμ΄λΌλŠ” μš©μ–΄λ₯Ό μ‚¬μš©ν•΄ TLS도 ν•¨κ»˜ μ§€μΉ­ν•©λ‹ˆλ‹€.

2️⃣ λ°μ΄ν„°λ² μ΄μŠ€ URL μ˜ˆμ‹œ.

1️⃣ MySQL

jdbc:mysql://localhost:3306/mydatabase?useSSL=false&serverTimezone=UTC
  • mysql : MySQL λ°μ΄ν„°λ² μ΄μŠ€ μ‚¬μš©
  • localhost : λ°μ΄ν„°λ² μ΄μŠ€ μ„œλ²„μ˜ μ£Όμ†Œ (λ‘œμ»¬μ—μ„œ μ‹€ν–‰ 쀑인 경우)
  • 3306 : MySQL의 κΈ°λ³Έ 포트 번호
  • mydatabase : μ—°κ²°ν•  λ°μ΄ν„°λ² μ΄μŠ€ 이름
  • useSSL=false : SSL μ‚¬μš© μ—¬λΆ€ (이 μ˜ˆμ‹œμ—μ„œλŠ” μ‚¬μš©ν•˜μ§€ μ•ŠμŒ)
  • serverTimezone=UTC : μ„œλ²„μ˜ νƒ€μž„μ‘΄ μ„€μ •

2️⃣ PostgreSQL

jdbc:postgresql://localhost:5432/mydatabase
  • postgresql : PostgreSQL λ°μ΄ν„°λ² μ΄μŠ€ μ‚¬μš©
  • localhost : λ°μ΄ν„°λ² μ΄μŠ€ μ„œλ²„ μ£Όμ†Œ
  • 5432 : PostgreSQL의 κΈ°λ³Έ 포트 번호
  • mydatabase : μ—°κ²°ν•  λ°μ΄ν„°λ² μ΄μŠ€ 이름

3️⃣ Oracle

jdbc:oracle:thin:@localhost:1521:ORCL
  • oracle:thin : Oracle의 JDBC λ“œλΌμ΄λ²„ μ‚¬μš©
  • localhost : λ°μ΄ν„°λ² μ΄μŠ€ μ„œλ²„ μ£Όμ†Œ
  • 1521 : Oracle의 κΈ°λ³Έ 포트 번호
  • ORCL : λ°μ΄ν„°λ² μ΄μŠ€ μ„œλΉ„μŠ€ 이름

4️⃣ SQL Server

jdbc:sqlserver://localhost:1433;databaseName=mydatabase;integratedSecurity=true;
  • sqlserver : Microsoft SQL Server μ‚¬μš©
  • localhost : λ°μ΄ν„°λ² μ΄μŠ€ μ„œλ²„ μ£Όμ†Œ
  • 1433 : SQL Sever의 κΈ°λ³Έ 포트 번호
  • mydatabase : μ—°κ²°ν•  λ°μ΄ν„°λ² μ΄μŠ€ 이름
  • integratedSecurity=true : 톡합 λ³΄μ•ˆ(Windows 인증) μ‚¬μš©

5️⃣ H2(In-Memory Database)

jdbc:h2:mem:testdb
  • h2:mem : H2 λ°μ΄ν„°λ² μ΄μŠ€μ˜ λ©”λͺ¨λ¦¬ λͺ¨λ“œ μ‚¬μš©
  • testdb : λ©”λͺ¨λ¦¬ λ‚΄μ—μ„œ μ‚¬μš©ν•  λ°μ΄ν„°λ² μ΄μŠ€ 이름

3️⃣ λ°μ΄ν„°λ² μ΄μŠ€ URL μ‚¬μš© 방법.

  • λ°μ΄ν„°λ² μ΄μŠ€ URL은 주둜 Spring Boot와 같은 ν”„λ ˆμž„μ›Œν¬λ‚˜ JDBC(Java Database Connectivity) APIλ₯Ό 톡해 λ°μ΄ν„°λ² μ΄μŠ€μ— μ—°κ²°ν•  λ•Œ μ„€μ •ν•©λ‹ˆλ‹€.
    • 예λ₯Ό λ“€μ–΄, Spring Bootμ—μ„œ application.propertiesλ‚˜ application.yml νŒŒμΌμ— λ°μ΄ν„°λ² μ΄μŠ€ URL을 μ§€μ •ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

πŸ‘‰ application.propertiesμ—μ„œ λ°μ΄ν„°λ² μ΄μŠ€ URL μ„€μ •.

spring.datasource.url=jdbc:mysql://localhost:3306/mydatabase?useSSL=false&serverTimezone=UTC
spring.datasource.username=root
spring.datasource.password=secret

πŸ‘‰ JDBC API둜 λ°μ΄ν„°λ² μ΄μŠ€ μ—°κ²° μ˜ˆμ‹œ

String url = "jdbc:mysql://localhost:3306/mydatabase?useSSL=false&serverTimezone=UTC";
String username = "root";
String password = "secret";

Connection conn = DriverManager.getConnection(url, username, password);

4️⃣ λ°μ΄ν„°λ² μ΄μŠ€ URL의 ꡬ성 μš”μ†Œ μš”μ•½.

  • ν”„λ‘œν† μ½œ(JDBC) : jdbc:둜 μ‹œμž‘ν•˜λ©° JDBC(Java Database Connectivity)λ₯Ό μ‚¬μš©ν•œ λ°μ΄ν„°λ² μ΄μŠ€ 연결을 μ˜λ―Έν•©λ‹ˆλ‹€.
  • λ°μ΄ν„°λ² μ΄μŠ€ μœ ν˜• : μ‚¬μš©ν•  λ°μ΄ν„°λ² μ΄μŠ€μ˜ μ’…λ₯˜(MySQL, PostgreSQL, Oracle λ“±)λ₯Ό μ§€μ •ν•©λ‹ˆλ‹€.
  • μ„œλ²„ μ£Όμ†Œ(ν˜ΈμŠ€νŠΈμ™€ 포트) : λ°μ΄ν„°λ² μ΄μŠ€ μ„œλ²„μ˜ μœ„μΉ˜λ₯Ό λ‚˜νƒ€λƒ…λ‹ˆλ‹€(둜컬 λ˜λŠ” 원격).
  • λ°μ΄ν„°λ² μ΄μŠ€ 이름 : μ—°κ²°ν•˜λ €λŠ” λ°μ΄ν„°λ² μ΄μŠ€μ˜ 이름을 μ§€μ •ν•©λ‹ˆλ‹€.
  • μΆ”κ°€ μ˜΅μ…˜ : SSL μ‚¬μš©, νƒ€μž„μ‘΄ μ„€μ • λ“± 좔가적인 섀정이 ν•„μš”ν•  λ•Œ URL에 포함될 수 μžˆμŠ΅λ‹ˆλ‹€.

5️⃣ μš”μ•½.

  • λ°μ΄ν„°λ² μ΄μŠ€ URL은 μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ΄ λ°μ΄ν„°λ² μ΄μŠ€μ— μ—°κ²°ν•  λ•Œ μ‚¬μš©ν•˜λŠ” κ³ μœ ν•œ μ£Όμ†Œλ‘œ, λ°μ΄ν„°λ² μ΄μŠ€ μœ ν˜•, μ„œλ²„ μ£Όμ†Œ, 포트 번호, λ°μ΄ν„°λ² μ΄μŠ€ 이름 λ“±μ˜ 정보λ₯Ό ν¬ν•¨ν•˜μ—¬ μ—°κ²° 섀정을 μ •μ˜ν•©λ‹ˆλ‹€.