본문 바로가기

Study/개발일지

[백엔드온라인TIL] java 학습 19일차

mysql 비밀번호 분실하여 재설치 

spring auth 공부 (jwt)

 

mysql uroot -p

를 통해 접속하려는데 비밀번호가 틀리다고 접속이 안된다.

비밀번호를 재설정하자.

 

1. 작업관리자에서 mysql 혹은 mysqld를 종료

2. MySQL이 설치된 경로로 이동

관리자 권한으로 cmd를 실행한다.

 

where mysql

를 입력하면 mysql이 설치된 경로를 알아낼 수 있다.

이렇게 mysql이 저장된 경로를 받아온 뒤(전체 경로에서 mysql.exe를 빼야 한다.) cd [경로]를 입력하여 해당 경로로 이동한다.

 

3. 이동한 경로에서 mysqld.exe --skip-grant-tables --console --shared-memory를 입력

 

이 때 Can't create test file 에러가 발생했다.(일반적으로 발생하지 않는듯 하다.)

 

 

이런 에러가 발생할 경우 똑같은 경로에서 우선 아래 명령어를 수행한다.

 

mysqld --initialize --console

 

이제 다시 mysqld.exe --skip-grant-tables --console --shared-memory를 입력하면, 제대로 실행되는 것을 볼 수 있다.

 

4. 관리자 권한으로 cmd 새로운 창 실행 후 mysql -u root 입력

 

  관리자 권한으로 새로운 창을 실행한 후 mysql -u root 를 입력하면 아래와 같이 mysql에 정상 접속된다. 아래와 같이 순차적으로 비밀번호를 변경한다.

 

  1) NULL로 root 비밀번호 변경

  2) 다시 접속하여 진짜 비밀번호로 변경

 

그럼 접속된 mysql에서 순차적으로 명령어를 입력하자.

 

use mysql;

UPDATE user SET authentication_string=null WHERE User='root';

select authentication_string from user;

flush privileges;

 

세번째, 네번째 줄은 확인차 하는 명령이다. 성공적으로 실행됐다면 아래와 같은 그림을 보인다.

 

이제 종료 후 다시 접속하기 위해 아래 명령어를 입력한다.

 

exit

 

이제 종료됐으면 다시 접속하기 위해 아래 명령어를 입력한다.

 

mysql

 

접속이 됐으면 비밀번호를 바꾸자.

 

alter user 'root'@'localhost' identified with mysql_native_password by '변경할 비밀번호';

 

flush privileges;

 

 

 

 

JWT는 JSON 객체를 사용해서 토큰 자체에 정보들을 저장하고 있는

Web Token이라고 정의할 수 있다.

 

JWT를 이용하는 방식은 헤비하지 않고 아주 간편하고 쉽게 적용할 수 있어서

사이드 프로젝트를 진행할 때 유용하다.

 

JWT의 장점

  • 중앙의 인증서버 의존성 없음
  • 데이터 스토어에 대한 의존성 없음
  • 시스템 수평 확장 유리
  • Base64의 URL Safe Encoding을 이용하기 때문에 URL, Cookie, Header 모두 사용 가능

JWT의 단점

  • Payload의 정보가 많아지면 네트워크 사용량 증가 -> 데이터 설계 고려 필요
  • 토큰을 클라이언트에 저장 -> 서버에서 토큰을 조작할 수 없음

우선 회원 인증 입니다.

JWT 를 사용하는 가장 흔한 시나리오 입니다. 스프링 시큐리티를 통하여 유저가 로그인정보가 DB와 일치한다면, 서버는 유저의 정보에 기반한 토큰을 발급하여 유저에게 전달해줍니다.

그 후, 유저가 서버에 요청을 할 때 마다 JWT를 포함하여 전달합니다. 서버가 클라이언트에게서 요청을 받을때 마다, 해당 토큰이 유효하고 인증됐는지 검증을 하고, 유저가 요청한 작업에 권한이 있는지 확인하여 작업을 처리합니다. (토큰을 받아 localstorage에 담아주었습니다)

여기서 스프링 시큐리티를 활용하여 비로그인,로그인회원들이 접근할수있는 페이지 권한을 모두 다르게 설정해주었습니다.

이러한 동작과정으로 아까 말씀드린것처럼 서버측에서는 유저의 세션을 유지 할 필요가 없습니다. 즉 유저가 로그인되어있는지 안되어있는지 신경 쓸 필요가 없고, 유저가 요청을 했을때 토큰만 확인하면 됩니다.

 

정보 교류

 JWT는 두 개체 사이에서 안정성있게 정보를 교환하기에 좋은 방법입니다. 그 이유는, 토큰마다 권한 정보가 서버 비밀키로 서명이 되어있기 때문에 정보를 보낸이가 바뀌진 않았는지, 또 정보가 도중에 조작되지는 않았는지 검증할 수 있습니다.

728x90