728x90
반응형

 

 

1. API 키 기반 인증

  • 클라이언트가 서버로부터 발급받은 고유한 API 키를 요청 헤더에 포함하여 요청을 보냅니다.
  • 서버는 해당 키를 확인하고 요청을 처리합니다.

특징

  • 간단하고 설정이 쉬움.
  • 보안 수준이 낮음(키가 노출되면 악용 가능).
  • 주로 공공 API에서 사용.

예시

GET /resource HTTP/1.1
Authorization: Bearer eyJhbGciOiJIUzI1NiIsIn...
 

2. JWT(JSON Web Token)

  • 서버에서 사용자 로그인 시 비밀 키로 JWT를 발급하고, 클라이언트는 이후 요청 시 이 토큰을 헤더에 포함하여 전달합니다.
  • 서버는 토큰을 검증하여 사용자를 인증합니다.

특징

  • Stateless 방식: 서버는 상태를 저장하지 않음.
  • 발급된 토큰은 클라이언트에서만 저장됨(주로 로컬 스토리지 또는 쿠키).
  • 토큰에 사용자 정보를 포함할 수 있어 확장성이 좋음.

예시

GET /resource HTTP/1.1
Authorization: Bearer eyJhbGciOiJIUzI1NiIsIn...
 

3. OAuth 2.0

  • 제3자 인증 방식으로, 클라이언트가 별도의 인증 서버를 통해 액세스 토큰을 얻은 후 API 서버에 전달합니다.
  • 액세스 토큰리프레시 토큰을 활용하여 보안성을 높입니다.

특징

  • 보안성이 매우 높음.
  • 구현이 복잡하며 주로 대규모 서비스에서 사용.
  • 예: Google, Facebook, GitHub 로그인.

4. 세션 기반 인증

  • 사용자가 로그인하면 서버에서 세션을 생성하고, 클라이언트는 세션 ID를 쿠키로 저장하여 요청 시 서버에 보냅니다.
  • 서버는 세션 스토리지(메모리, Redis 등)를 참조하여 사용자를 인증합니다.

특징

  • 상태 저장 방식(Stateful).
  • 주로 웹 애플리케이션에서 사용.
  • 확장성(스케일링)에 제한이 있을 수 있음.

예시

Cookie: sessionId=xyz123
 

5. Basic Authentication

  • 요청 시 사용자의 아이디와 비밀번호를 Base64로 인코딩하여 헤더에 포함합니다.
  • 보안성이 낮아 HTTPS를 사용하지 않으면 추천되지 않음.

예시

GET /resource HTTP/1.1
Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=
 

6. Mutual TLS 인증

  • 서버와 클라이언트 모두 SSL/TLS 인증서를 사용하여 상호 인증을 수행합니다.
  • 주로 금융 또는 보안이 중요한 서비스에서 사용.

특징

  • 매우 높은 보안 수준.
  • 인증서 관리가 복잡함.

선택 기준

  • 간단한 서비스: API 키 또는 세션 기반 인증.
  • 분산된 클라이언트 환경: JWT.
  • 제3자 인증 필요: OAuth 2.0.
  • 고보안 요구: Mutual TLS.
728x90
반응형
728x90
반응형

 

 

 

 

 

https://dev.mysql.com/downloads/mysql/ 에 클릭해서 들어가면 여러가지 버전의 MySQL을 다운로드 받을 수 있다.

 

이 중에서 8.4.2 LTS 버전을 다운로드 하여, 설치프로그램으로 설치하면 됩니다.

체크박스에 체크를 해주고 다음으로 넘어간다.

그냥, Complete 를 선택하고 Next 를 클릭한다.

비밀번호는 test123 으로 하겠다.

공부를 위한 Sample DB 도 체크해주자.

 

그리고, Finish 누르면, 설치 완료.

서비스에도 등록되어서, 자동으로 서버가 실행이 된다.

 

우리는 커맨드툴을 주로 사용할 것이라서 mysql 명령어로 로그인해봅시다. 그런데, mysql.exe 가 있는 폴더가 PATH 설정이 되어 있지 않아서 당장에는 사용할 수 없다. 일단 PATH 설정부터 하자.

 

Win + R 버튼을 누른다. 그리고, sysdm.cpl ,3 이라고 입력하고 엔터를 친다.

마지막에 MySQL 이 설치된 위치 (C:\Program Files\MySQL\MySQL Server 8.4\bin) 을 입력하고 확인 버튼을 눌러준다.

 

그리고, 새로운 커맨드창에서 mysql --version 를 입력합니다. 이렇게 나오면 성공~!

이제, mysql 을 이용해서 DB 서버에 접속해보자. mysql -u root -p 라고 입력하고, 비밀번호(test123)까지 입력해보자.

여기에서 show database; 이라고 입력하면, 존재하는 database 목록을 출력해준다. 설치할때 체크해두었던 샘플DB(sakila, world) 도 같이 보인다.

일단 새로운 User를 하나 생성해봅시다.

-- CREATE USER '아이디'@'%' IDENTIFIED BY '비밀번호';
CREATE USER 'test_user'@'%' IDENTIFIED BY 'test123';

 

현재 존재하는 사용자를 볼 수 있습니다.

 

자... 그러면... 이제 Database 를 생성해봅시다.

-- CREATE DATABASE 디비이름 DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
CREATE DATABASE test_db DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

show databases; 로 Database(test_db)가 생성되었는지도 확인해봅시다.

test_user 가 test_db 를 사용할 수 있도록 권한을 설정해보자.

-- GRANT ALL PRIVILEGES ON 디비이름.* to 사용자@'%';
GRANT ALL PRIVILEGES ON test_db.* to test_user@'%';

 

일단 exit 로 mysql 을 빠져나온다. mysql에 test_user test_db에 재접속해봅니다.

테스트용으로 테이블을 생성해봅시다.

CREATE TABLE TB_ADMIN
(
    ADMIN_NO INT AUTO_INCREMENT NOT NULL,
    LOGIN_ID VARCHAR(20) NOT NULL UNIQUE,
    PASSWD VARCHAR(20) NOT NULL,
    NICK VARCHAR(20) NOT NULL,
    EMAIL VARCHAR(40),
    PRIMARY KEY (ADMIN_NO)
);

 

show tables; 를 입력하면 현재 존재하는 테이블을 볼 수 있습니다.

다음과 같이 해당 테이블의 내용을 조회해볼 수도 있습니다. 아직 데이터가 들어있지 않으니, 아무 것도 안나오겠지요.

테스용 데이터를 2개 넣어보겠습니다.

INSERT INTO TB_ADMIN(LOGIN_ID, PASSWD, NICK, EMAIL)
VALUES('honggildong', 'ajtwlddl', '홍길동', 'hgd@gmail.com');
 
INSERT INTO TB_ADMIN(LOGIN_ID, PASSWD, NICK, EMAIL)
VALUES('jangnara', 'dlQmsdl', '장나라', 'jnr@gmail.com');

다시 조회를 해보면, 다음처럼 2개의 데이터가 들어있는 것을 확인할 수 있을 겁니다.

데이터 수정도 해볼까요? ^^

UPDATE TB_ADMIN SET NICK = '홍길똥' WHERE LOGIN_ID = 'honggildong';
UPDATE TB_ADMIN SET NICK = '짱나라' WHERE LOGIN_ID = 'jangnara';

확인해보면, NICK 이 '홍길똥'과 '짱나라'로 바뀌어 있을 거에요.

그러면, 마지막으로 데이터 삭제도 해봅시다.

DELETE FROM TB_ADMIN WHERE LOGIN_ID = 'honggildong';

역시 확인해보면,  '홍길똥'이 삭제되고 '짱나라'만 남은 것을 볼 수 있습니다.

exit 로 mysql 을 일단 빠져나옵니다. DB 백업을 알아보자구요. mysqldump 라는 프로그램을 사용합니다. 아래처럼 실행해주면, test_db.bak 이라는 백업파일이 생성됩니다.

다시, mysql 로 로그인 해서 DROP TABLE 로 TB_ADMIN 테이블을 날려줍니다. SELECT 문으로 확인해보세요. 확실히 날라갔지요.

exit 로 빠져와서 Database 를 복구해봅시다.

위와 같이 진행되어 복구가 완료됩니다. 이를 확인해보려면, mysql 로 다시 로그인해서 show tables; 를 입력해보고, SELECT 문으로 데이터를 조회해보면 됩니다.

 

이렇게 명령어로 작업들을 진행했는데, 당연히 GUI 관리 프로그램을 이용해서 같은 작업을 할 수 있다. 여러가지 프로그램들이 있는데, 첫번째로 생각해볼 수 있는 것은 MySQL 에서 제공하는 툴을 쓰면 좋을 것이다. MySQL Workbanch 라는 프로그램을 제공하고 있지만, MySQL 8.0 까지만 동작하고, MySQL 8.4 에는 연결이 되지 않는다. 다른 대안으로 HeidiSQL 을 사용하기를 권한다. https://www.heidisql.com/ 에서 프로그램을 다운로드 설치한다. 실행하면 아래와 같이 나올 것이다.

신규 버튼을 클릭한 다음에 다음처럼 입력해서 저장하자.

그리고, 열기를 누르면... 아래와 비스끄므리한 화면이 나오면 로그인 성공한 것이다.

여기에서 DB 생성/삭제 를 할 수 있으며, 사용자에 대한 설정, 그 외에 다양한 작업들을 할 수 있다. 자세한 것은 나중에 하도록 하고, 한 번 둘러보기 바란다.

 

여기까지 해서, Windows 에 MySQL 을 설치하고, 기본적인 사용법을 함께 알아보았습니다. SQL문에 대해서는 좀 더 심도있게 따로 공부할 필요는 있습니다.

728x90
반응형
728x90
반응형

 

 

 

 

https://www.enterprisedb.com/downloads/postgres-postgresql-downloads 에 클릭해서 들어가면 여러가지 버전의 PostgreSQL을 다운로드 받을 수 있다.

이 중에서 가장 최신 버전(16.4)를 다운로드 하여, 설치프로그램으로 설치하면 됩니다.

적당한 비밀번호를 입력해주세요.

Finish 버튼을 누르기 전에 체크박스를 언체크해주세요. 그리고, Finish 누르면, 설치 완료.

서비스에도 등록되어서, 자동으로 서버가 실행이 된다. Windows 에서 PostgreSQL을 운영하려면 이렇게도 괜찮은데, 보통은 개발 목적으로 설치하게 된다. 그래서, 나는 이렇게 설치프그로램으로 설치하는 것보다는 scoop ( https://scoop.sh ) 을 이용해서 설치한다. 일단 설치한 PostgreSQL을 삭제하고.... scoop 을 준비한다.

 

그리고, 커맨드창에서 scoop install main/postgresql 를 입력해서 다시 설치를 진행한다.

여기에서 마지막 Notes 를 잘 확인해자. PostgreSQL 시작/종료를 pg_ctl start / pg_ctl stop 으로 할 수 있다. 그리고, pc_ctl register -N PostgreSQL 로 서비스에도 등록할 수 있다. 마지막으로 수퍼유저인 postgres 의 비밀번호는 없다고 나온다. 일단, pg_ctl start 로 서버를 실행시키자.

 

그리고, 시작의 프로그램메뉴를 뒤져보면, Scoop Apps 아래에 pgAdmin 4 라는 프로그램이 설치된 것을 확인해볼 수 있다. 이름을 보면 알겠지만, PostgreSQL GUI 관리 프로그램이다. 일단 실행을 해보자.

실행하면 아래와 같이 나오고, 왼쪽의 Servers 에 마우스 우측 버튼을 클릭해서 팝업버튼을 표시하고, Register > Server... 를 선택해준다. 

 

아래 화면이 나오면, General 탭의 Name에 localhost 라고 입력하고,

Connection 탭을 선택해서 Host name/address 에 localhost 를 입력해준다. 그리고, Save 버튼을 클릭한다.

그러면, 아래처럼 설치된 PostgreSQL 에 연결될 것이다.

pgAdmin 4에 접속하는 법을 알아보았고, 우리는 커맨드툴을 주로 사용할 것이라서 psql 명령어로 로그인해봅시다. 커맨드창에서 psql -U postgres 를 입력합니다.

여기에서 \l 이라고 입력하면, 존재하는 database 목록을 출력해준다.

일단 새로운 User를 하나 생성해봅시다.

-- CREATE USER 아이디 WITH PASSWORD '비밀번호';
CREATE USER test_user WITH PASSWORD 'test123';

 

\dg 를 입력하면 현재 존재하는 사용자를 볼 수 있습니다.

자... 그러면... 이제 Database 를 생성해봅시다.

-- CREATE DATABASE 디비이름 WITH ENCODING='utf-8' OWNER 아이디;
CREATE DATABASE test_db WITH ENCODING='utf-8' OWNER test_user;

\l 로 Database(test_db)가 생성되었는지도 확인해봅시다.

 

이제, \q 로 psql 을 빠져나가서, test_usertest_db에 재접속해봅니다.

테스트용으로 테이블을 생성해봅시다.

CREATE TABLE TB_ADMIN
(
    ADMIN_NO Serial NOT NULL,
    LOGIN_ID Varchar(20) NOT NULL UNIQUE,
    PASSWD Varchar(20) NOT NULL,
    NICK Varchar(20) NOT NULL,
    EMAIL Varchar(40),
    PRIMARY KEY (ADMIN_NO)
) Without Oids;

 

\d 를 입력하면 현재 존재하는 테이블을 볼 수 있습니다.

다음과 같이 해당 테이블의 내용을 조회해볼 수도 있습니다. 아직 데이터가 들어있지 않으니, 아무 것도 안나오겠지요.

테스용 데이터를 2개 넣어보겠습니다.

INSERT INTO TB_ADMIN(LOGIN_ID, PASSWD, NICK, EMAIL)
VALUES('honggildong', 'ajtwlddl', '홍길동', 'hgd@gmail.com');
 
INSERT INTO TB_ADMIN(LOGIN_ID, PASSWD, NICK, EMAIL)
VALUES('jangnara', 'dlQmsdl', '장나라', 'jnr@gmail.com');

다시 조회를 해보면, 다음처럼 2개의 데이터가 들어있는 것을 확인할 수 있을 겁니다.

 데이터 수정도 해볼까요? ^^

UPDATE TB_ADMIN SET nick = '홍길똥' WHERE LOGIN_ID = 'honggildong';
UPDATE TB_ADMIN SET nick = '짱나라' WHERE LOGIN_ID = 'jangnara';

확인해보면, NICK 이 '홍길똥'과 '짱나라'로 바뀌어 있을 거에요.

그러면, 마지막으로 데이터 삭제도 해봅시다.

DELETE FROM TB_ADMIN WHERE LOGIN_ID = 'honggildong';

역시 확인해보면,  '홍길똥'이 삭제되고 '짱나라'만 남은 것을 볼 수 있습니다.

\q 로 psql 을 일단 빠져나옵니다. DB 백업을 알아보자구요. pg_dump 라는 프로그램을 사용합니다. 아래처럼 실행해주면, test_db.bak 이라는 백업파일이 생성됩니다.

다시, psql 로 로그인 해서 DROP TABLE 로 TB_ADMIN 테이블을 날려줍니다. \d 로 확인해보고 SELECT 문으로 확인해보세요. 확실히 날라갔지요.

 

\q 로 빠져와서 Database 를 복구해봅시다.

위와 같이 진행되어 복구가 완료됩니다. 이를 확인해보려면, psql 로 다시 로그인해서 \d 를 입력해보고, SELECT 문으로 데이터를 조회해보면 됩니다.

 

 

여기까지 해서, Windows 에 PostgreSQL 을 설치하고, 기본적인 사용법을 함께 알아보았습니다. SQL문에 대해서는 좀 더 심도있게 따로 공부할 필요는 있습니다.

728x90
반응형
728x90
반응형

 

 

놀자코딩

#Programming #Coding #Development #API #Server #python #golang #java #nodejs #javascript #프로그래밍 #코딩 #개발 #서버 #파이썬 #Go언어 #자바 #노드 #자바스크립트

www.youtube.com

 

I. 설치

일단, 필요한 프로그램을 다운로드받아서 설치부터 합니다.

1. Windows Terminal 을 설치한다.

2. 유사 Linux 환경인 MSYS2 를 설치한다.

3. Visual Studio Code 를 설치한다.

3. 윈도우용 프로그램을 쉽게 설치/관리할 수 있는 Chocolatey 를 설치한다.

4. 내가 좋아하는 텍스트에디터 neovim 도 설치하자. Chocolatey를 이용한다.

> choco install neovim

 

II. 구성

 

(0) MSYS2에 Windows 환경변수 공유하기

 

C:\msys64\msys2.ini과  C:\msys64\mingw64.ini 파일에서 아래 줄의 주석을 풀어준다.

MSYS2_PATH_TYPE=inherit

 

(1) Visual Studio Code 의 터미널에 MSYS2 bash 설정하기

 

메뉴의 "Files - Preference - Settings" 를 선택한다. 그리고, 아래 스크린샷에 표시된 우측 상단에 있는 버튼을 클릭하면, settings.json 이 나타난다.

settings.json 에 다음을 입력한다.

  "terminal.integrated.defaultProfile.windows": "MSYS2",
  "terminal.integrated.profiles.windows": {
    // "PowerShell": {
    //   "source": "PowerShell",
    //   "icon": "terminal-powershell"
    // },
    // "Command Prompt": {
    //   "path": [
    //     "${env:windir}\\Sysnative\\cmd.exe",
    //     "${env:windir}\\System32\\cmd.exe"
    //   ],
    //   "args": [],
    //   "icon": "terminal-cmd"
    // },
    // "Git Bash": {
    //   "source": "Git Bash"
    // },
    "MSYS2": {
      "path": "C:\\msys64\\usr\\bin\\bash.exe",
      "args": [
        "--login",
        "-i"
      ],
      "env": {
        "MSYSTEM": "MINGW64",
        "CHERE_INVOKING": "1"
      }
    }
  },

이제 Visual Studio Code를 다시 시작한 후 터미널을 열어보면, 아래처럼 MSYS2 Bash로 잘 실행될 것이다.

 

(2) Windows Terminal

 

Windows Terminal 을 실행해보면, 기본 터미널이 PowerShell 이다. 이것을 MSYS2로 변경해보자. 상단에 있는 꺽쇠 아이콘을 클릭하면, 메뉴가 내려온다. 여기에서 설정 메뉴를 선택한다.

이번에는 좌측 하단에 있는 Json 파일 열기를 클릭한다. 그러면, 텍스트에디터에서 Windows Terminal의 settings.json 을 열어줄 것이다.

settings.json 파일에 아래 내용을 추가한다.

    {
      "guid": "{71160544-14d8-4194-af25-d05feeac7233}",
      "name": "MSYS / MSYS2",
      "commandline": "C:/msys64/msys2_shell.cmd -defterm -here -no-start -msys -use-full-path",
      "startingDirectory": "C:/msys64/home/%USERNAME%",
      "icon": "C:/msys64/msys2.ico",
      "fontFace": "Lucida Console"
    }

defaultProfile 도 추가한 항목의 guid로 교체해준다. 이렇게 하면 MSYS2가 기본 터미널로 지정된다.

Windows Terminal을 다시 실행하면 MSYS2 bash가 나오는 것을 확인할 수 있다.

 

(3) MSYS2 패키지 최신 상태로 만들기

MSYS2는 Arch Linux 등에서 사용하던 Pacman 패키지 관리자로 패키지를 관리한다. Pacman 명령어를 통해 필요한 개발 도구들을 설치할 수 있다.

아래 명령어로 최신 패키지들 목록을 가져오면서 설치된 패키지들을 업데이트 할 수 있다. 이 것을 2번 실행한다.

$ pacman -Syu

실행되는 모습은 아래와 같다.

필요한 패키지들은 https://packages.msys2.org/queue 에서 검색해볼 수 있다.

 

아래 명령어로 mingw에서 제공하는 toolchain을 설치합니다. Toolchain을 통해 기본적인 빌드 패키지들을 한 번에 받을 수 있습니다.

$ pacman -S mingw-w64-x86_64-toolchain

 

(4) vim, winpty 설치하기

$ pacman -S vim winpty

 

(5) HOME 디렉토리 변경하기

/etc/nsswitch.conf를 아래처럼 변경한다.

# Begin /etc/nsswitch.conf

passwd: files db
group: files # db

db_enum: cache builtin

db_home: env windows cygwin desc
db_shell: env windows # cygwin desc
db_gecos: env # cygwin desc

# End /etc/nsswitch.conf
$ grep "^${USERNAME}:" /etc/passwd >/dev/null 2>&1 || mkpasswd | grep "^${USERNAME}:" >>/etc/passwd

 

(6) neovim 설정하기

먼저 vim 플러그인 관리 도구인 vim-plug 를 설치합니다. PowerShell 을 열어서, 다음을 실행한다.

iwr -useb https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim |`
    ni "$(@($env:XDG_DATA_HOME, $env:LOCALAPPDATA)[$null -eq $env:XDG_DATA_HOME])/nvim-data/site/autoload/plug.vim" -Force

neovim 의 설정 파일은 init.vim 이며, 위치는 아래와 같다.

C:\Users\아이디\AppData\Local\nvim\init.vim

여기에, 아래 내용을 넣어보자.

" Plug-In 시작 (플러그인 설치 경로)
call plug#begin('~/.vim/plugged')

" 설치하고 싶은 플러그인 (예, vim-airline)
Plug 'vim-airline/vim-airline'

" 플러그인 시스템 초기화
call plug#end()

이렇게 저장하고, nvim 을 다시 열고 :Plug<Tab> 을 입력시 아래와 같이 나오면 성공이다.

등록한 플러그인은 nvim 내에서 :PlugInstall 명령어를 입력하여 설치 가능하다. 해보자~!

설치후에, nvim 을 다시 열면... 아래와 같이 조금 더 이쁘게 바뀌어 있을 것이다.

 

 

 

 

 

728x90
반응형

+ Recent posts