이번에 제대로 삽질 했다.
😭
내가 접근한 방법은 mysql 5.* 버전에서나 먹히는 방법인데
지금 사용하는 버전은 8이다.
아예 접근을 잘못하고 있었다.
앞으로는 꼭 검색을 통해 내가 하려는 방향이 옳은 방향인지 확인해보고 시도해볼것 😭
엄청난 교훈을 얻고 잠시 휴식....
+ 아래에 쓴 글은 도움도 안되는
안타까운 이야기 정도로 남겨놔야지......
이런식으로 개발하면 곤란함을 잊어버리지 말자 🥺
mysql root 계정으로 로그인 성공 했는데,
비밀번호가 너무 개인정보라서 변경이 필요함을 느꼈다.
프로젝트에 올려야 하기 때문!
show databases;
로그인 계정 정보는 mysql 데이터베이스서 관리되고 있다.
use mysql; 입력!
show tables;
여기서 user 테이블을 사용할 거다.
desc table user;
엇 이게 아니네
desc user;
와우 컬럼이 51개나 있다. ㄷㄷㄷ
여기서 비밀번호 변경에 필요한 컬럼은 User , password...........가 있는 줄 알았는데 없다
검색 고고
알아보니 mysql 5.7
부터 password 컬럼 이름이 변경되었다고 한다.
이제는 authentication_string
컬럼이 비밀번호 컬럼이다!
select `user`, authentication_string
from user;
오호
과거의 내가 계정을 두개 만들어 놓은 것이 보인다.
비번 모양을 보아하니 전부 똑같넹ㅋㅋㅋ
훌륭하군
ㅋㅋㅋㅋㅋㅋ
이왕 바꾸는 김에
zhyun , zh , root 3개 계정에 대한 비번을 바꾸기로 결정!
오 세상에
mysql8 부터 password() 함수도 사라졌다고 한다. 보고 배운 블로그 : ioerror.tistory
아래의 코드는 이제는 에러를 뿜어냄..
UPDATE user SET authentication_string=password('rootrootgroot') WHERE `user`='zhyun';
UPDATE user SET authentication_string=password('rootrootgroot') WHERE `user`='zh';
UPDATE user SET authentication_string=password('rootrootgroot') WHERE `user`='root';
보고 배운 블로그 작성자는
UPPER( SHA1( UNHEX( SHA1( str ) ) ) )
이런 식으로 작성해서 암호화 했다.
두번 암호화!
맞게 알고 있는지 확인!
select sha1('rootrootgroot');
아
이게 나는 실행할 때 마다 다른 문자열이 반환 될 줄 알았는데 아니었다.
😕
unhex 값 궁금해서 조회
select unhex(sha1('rootrootgroot'));
한 번 더 암호화 진행!
select sha1(unhex(sha1('rootrootgroot')));
그런데 이렇게 암호화해서 변경하면
로그인 할 땐 어떻..??
zh 계정으로 테스트를 해보기로 했다.;
zh 비번 변경
update user set authentication_string = sha1(unhex(sha1('rootrootgroot'))) where `user` = 'zh'; flush privileges;
mysql 로그아웃 후 zh로 로그인 시도
ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ
큰일날뻔 했다.검색해보니 mysql은 기본적으로 로그인 시
sha1()을 이용해서 비번 확인을 한다고 하여 sha1()만 사용해서 등록 시도!
+ 시간을 절약하기 위해 zhyun 계정은 비번을 직접 암호화하지 않고 변경
비번 형태 조회
실험 결과
sha1()을 이용해서 변경등록을 해줘야 되겠다는 생각을 했다.root 로그아웃 후 zh로 로그인 시도!
헐 zh , zhyun 둘 다 로그인 실패했다.
왤까
비밀번호가 틀린건 아니기 때문에,
root로 돌아가서 접속 계정의 host 접근 권한정보를 조회해보기로 마음먹었다.
오 뭐지
오 정말 뭐지
어디서부터 잘못된걸까
굉장히 어렵네..?
알파벳을 대문자로 변환
단방향 암호화 함수.
보고 배워보는 사이트 : habonyphp.com
RFC 3174로 묘사된 문자에 대해
160 비트 체크섬을 계산하여
40 헥사 자리 바이너리 문자열을 반환 한다고 ...;;
어우;
RFC 3174
: 보안 해시 알고리즘
160 비트 체크섬
: 160비트 길이의 암호화 해시를 만듦
"160비트 체크섬"이라는 용어는 일반적으로 컴퓨터 네트워킹 및 암호학에 사용되는 암호화 알고리즘을 가리킬 수 있습니다. 이러한 체크섬은 데이터의 무결성을 확인하는 데 사용됩니다. 160비트라는 용어는 암호화 해시의 길이를 나타냅니다.
예를 들어, SHA-1 (Secure Hash Algorithm 1)은 암호 해시 함수로, 160비트 길이의 체크섬 (또는 해시)을 생성합니다. 이 해시 함수는 데이터 블록을 입력 받아 고유한 160비트 출력을 생성합니다. 이 출력은 입력 데이터의 '요약'으로 볼 수 있으며, 데이터가 송신과 수신 과정에서 변경되지 않았음을 검증하는 데 사용됩니다.
SHA-1 알고리즘은 2021년까지 볼 때, 일부 약점이 발견되어 보안 측면에서 더 강력한 알고리즘들 (예: SHA-256, SHA-3 등)로 대체되는 추세입니다. 그러나 여전히 SHA-1은 일부 시스템에서 여전히 사용되고 있습니다.
40 헥사 자리 바이너리 문자열을 반환
: 40자리의 16진수 문자열을 반환
16진수로 인코딩 된 값을 디코딩해서 사람이 한눈에 알아볼 수 있는 문자로 만들어줌
unhex 보고 배운 블로그 : blog.naver.com/kkh0977
오
그런데 2021년부터 sha1 알고리즘의 보안이 약해졌다고 한다.
mysql에서 지원하는 알고리즘이 뭐가 더 있는지 확인!
sha2( )를 사용해볼까!
했는데 내가 설치한 버전에서는 sha2()를 지원하지 않아서 그냥 sha1( )을 사용..
8.0 설치했는데
왜 안되어있을까/
오늘은 뭔가 굉장히 총체적 난국이다.ㅋㅋㅋㅋㅋ
미챠~