이제 제게는 클라우드 내부에서
정상 작동 중인 데이터베이스가 있습니다
여러분도 로컬이나 클라우드
어디에선가 데이터베이스가 작동 중일 겁니다
이제 우리는 생성된 데이터베이스를 이용해
연결을 시험해 봐야 합니다
또 데이터베이스에 연결할
클라이언트 애플리케이션도 필요합니다
이를 위해 데이터베이스에 연결해 볼 수 있는
아주 가벼운 앱 또는 소프트웨어를 준비했습니다
이 애플리케이션은
sqlectron.github.io 사이트에서 찾을 수 있습니다
이 웹사이트 URL은
Spring Security GitHub 리포지터리에도
언급해 두었습니다
아래로 스크롤하면 Download GUI라는 버튼이 있습니다
이를 클릭하면
사용하고 계신 운영체제에 맞는
애플리케이션을 다운받을 수 있습니다
Windows를 사용하고 계신다면
이 .exe 버전
MacOS를 사용하신다면
이 .dmg 버전을 사용하시면 됩니다
어떤 운영체제를 사용하시는지에 따라
알맞은 걸 선택하시면 됩니다
소프트웨어를 다운로드하여 설치했으면
소프트웨어를 엽니다
저는 이미 제 노트북에 설치해 놓았으니
열어보겠습니다
소프트웨어는 이렇게 생겼습니다
지금으로서는
제가 전에 설치했던 데이터베이스들이
sqlectron 내부에 이미 있습니다
데이터베이스를 연결하는 법을 보여드리기 위해
저는 새로운 연결을 할 겁니다
그러므로 sqlectron에서 Add를 클릭하겠습니다
이 창에서는
우선 연결의 이름을 정해야 합니다
원하는 대로 정하면 됩니다
저는 Spring Security Latest라고 입력하겠습니다
데이터베이스 유형은 MySQL이어야 하므로
Database Type에서 MySQL을 선택해 주십시오
호스트명은 AWS 웹사이트에서 가져오면 됩니다
AWS 웹사이트에서
데이터베이스를 클릭하면
페이지가 열리고 Endpoint라 적힌 곳에
호스트 정보가 있습니다
MySQL 데이터베이스를 설치할 때
다른 방법을 사용하셨었다면
해당 웹사이트 또는 로컬 시스템에서
호스트명을 찾아와 주시기 바랍니다
지금 저는 호스트명을
AWS 웹사이트에서 복사하고
SQL의 포트 번호 기본값인 3306도
기억해 두겠습니다
먼저 호스트명을 붙여넣고
포트 번호 3306을 입력합니다
제가 생성했던 유저 아이디는 admin이었습니다
그리고 제가 설정했던 비밀번호는
mysqlspringsecurity이었습니다
제 비밀번호를 입력했습니다
그리고 물론이지만 실제 상황에서는
개발자에게 관리자 정보가
공유되는 경우는 없습니다
개발자는 읽기 전용 또는
읽기와 쓰기가 가능한 자격 증명을 사용하며
관리자나 루트 자격 증명을 사용하는 경우는 없습니다
하지만 이 경우에는 데이터베이스와 애플리케이션이
저희 것이므로 아무 자격 증명이나 사용해도 됩니다
비밀번호와 아이디를 입력하였으면
여기 있는 Test를 클릭합니다
이는 로컬 클라이언트
즉 sqlectron이
원격 데이터베이스에 연결할 수 있는지 테스트하도록 만듭니다
테스트가 성공적이었다면
Save 버튼을 클릭하여
연결을 저장하면 됩니다
이제 제가 만든 연결이 저장되었습니다
Connect를 클릭하면
새로운 창이 열리며
이 창은 데이트베이스에 접근하여
검색이 가능하도록 합니다
지금으로서는 완전히 새로운 데이터베이스여서
비어 있습니다
이 내부에 스키마를 생성한 다음
스키마 내부에 표와
열을 생성하여야 합니다
먼저 이 데이터베이스 서버에서
저는 스크립트의 도움을 받아
스키마를 생성하겠습니다
제일 먼저 실행하고 싶은 스크립트는
create database eazybank입니다
그러면 이 데이터베이스 서버 내부에
eazybank라는 작은 데이터베이스를 구축하게 됩니다
이 스크립트를 실행하겠습니다
그 다음에는 use eazybank를 실행합니다
그렇게 하면 이 데이터베이스 서버에서는
기본적으로 항상 eazybank라는 데이터베이스
또는 스키마를 사용하라고 명령하는 것이 됩니다
이 명령들을 실행하였으면
이제 데이터베이스를 볼 수 있게 될 겁니다
만약 그렇지 않다면 연결을 끊고
다시 연결하면 해결됩니다
다시 연결을 하자
이제는 eazybank라는 데이터베이스가 보이며
그 내부에는
아직 표와 열은 없습니다
다음으로는 표와 열을 생성해 주어야 하는데
원하는 대로 아무 표와 칼럼이나 생성할 수 있을까요?
그건 가능하지 않습니다
왜냐하면 JdbcUserDetailsManager를 사용하였기 때문입니다
그러므로 Spring Security 프레임워크에서 원하는
명명 규칙을 따라야 합니다
관련 스크립트는 어디서 얻을 수 있을까요?
이 users.ddl 파일을
Spring Security 프레임워크 내부에서 열면
복사할 수 있는 SQL 스크립트 몇 개가 있습니다
이걸 복사해서
모두 실행해 보겠습니다
이제 실행을 시도했더니
exception이 뜹니다
형식이 올바르지 않기 때문입니다
이제 어떻게 하냐면 Spring Security의 공식
문서 사이트로 가서 스크립트를 가져오면 됩니다
이게 Spring Security의 공식 문서입니다
JDBC 섹션으로 왔습니다
JDBC Authentication 페이지에서
Default Schema 아래에
몇 개의 스크립트가 언급되어 있습니다.
users 표
authorities 등의 모든 스크립트가
올바른 형식이 되도록 해 주는 스크립트입니다
이 값들을 사용해 보겠습니다
하나씩 실행을 시도해 보겠습니다
먼저 users 표를 실행합니다
이 스크립트에도 문제가 있는 듯 합니다
여기 있는 varchar_ignorecase를
MySQL 서버가 알아보지 못 하는 듯합니다
그러면 저는 MySQL 표준에 따라
스크립트를 수동으로 작성하고
그런 다음 실행하겠습니다
스크립트를 몇 개 준비하였습니다
여기 보이듯이
users 표를 생성하는 CREATE TABLE 스크립트입니다
authorities 표도 마찬가지입니다
이 두 스크립트는
Spring Security 프레임워크의 명명 방식에 부합합니다
표의 제목은 각각 users와 authorities이며
열의 제목 역시
Spring Security 프레임워크에 맞습니다
이 두 스크립트를 실행하겠습니다
이제 표가 성공적으로 생성되었습니다
이제는 모든 스크립트를
SQL 파일에 저장한 다음 그 파일을
SpringBoot 웹 애플리케이션에 업로드하겠습니다
몇 분 후에 업로드하도록 하겠습니다
그 전에 이 표에 기록을 몇 개 입력하여
테스트에 사용 가능하도록 하고 싶습니다
이 데이터베이스 내부에 유저를 생성하기 위해서는
INSERT 검색을 실행하면 됩니다
지금 저는 users와 authorities 표에
기록을 입력하려 하고 있습니다
아이디는 happy
비밀번호는 12345입니다
그리고 마지막 열의 1은
열을 활성화한다는 뜻입니다
그러므로 이 유저는 활성화가 됩니다
실행하겠습니다
다음으로 happy 유저에 대해
authorities 스크립트도 실행하겠습니다
Execute를 클릭합니다
이걸로 데이터베이스 내부에
하나의 유저를 성공적으로 생성하였습니다
물론 지금으로서는
데이터베이스에 수동으로 입력 하였지만
다음 강의에서는
등록 프로세스를 이용하여
여러 유저를 생성할 수 있도록 해 보겠습니다
이걸로 여러 개의 표와 기록을
데이터베이스에 생성하였습니다
이 데이터베이스를 새로 고치려 시도하면
작동하지 않습니다
무료 버전은 완벽하게 작동할 거라 기대하기 어렵습니다
이러면 연결을 끊은 다음
다시 연결을 시도합니다
이번에는 eazybank를 열려고 시도하면
authorities나 users와 같은 표가 보이며
SELECT 검색을 클릭하여 시도하자
두 개의 표에 모두
성공적으로 입력됩니다
이제 모든 게 정상 작동하는 듯 합니다
마지막 단계로 실행했던 스크립트를 모두 가져다
프로젝트에 업로드합니다
그러기 위해
resources 폴더로 갑니다
이 리소스 서버에 데이터를 삽입하기 위해
sql이라는 이름의
새로운 폴더를 생성하겠습니다
폴더를 생성하였으면
새로운 파일을 그 내부에 생성합니다
저는 파일명을
scripts.sql로 하겠습니다
그리고 그 안에 이번에 실행했던
모든 스크립트를 붙여넣습니다
처음에는 create database eazybank
그 다음에는 use eazybank
그 다음에는 두 개의 표를 생성하는 스크립트였습니다
그리고는 표에 유저 정보를 입력하여
인증에 사용할 수 있도록 하였습니다
이걸로 저희는 성공적으로
인증에 필요한 데이터베이스를
JDBC와 데이터베이스의 도움으로 생성하였습니다
다음 강의부터는 이것들을 활용하여 보겠습니다
감사드리며 다음 강의에서 뵙겠습니다
수고하셨습니다