티스토리 뷰

DB

[MySQL] Root 비밀번호 재설정하기

woo'^'chang 2023. 3. 19. 14:48

MySQL을 사용하다 보면 Root 비밀번호를 잊어버리는 경우가 존재합니다. 이를 해결하기 위해서는 Root 비밀번호 재설정이 필요합니다. 검색을 하면 여러 방법들이 존재하는데 의도된 동작을 하지 않을 때가 있어서 해 본 방법 중 가장 깔끔하게 진행된 방법을 정리해 보고자 글을 작성하게 되었습니다.

 

해당 방법은 MacOS, MySQL 8.0.32 버전을 기준으로 작성되었습니다.

1. MySQL 종료

MySQL 서버 실행을 위해서는 2가지 방법을 사용합니다.

brew services start mysql

homebrew를 통해 mysql을 설치했다면 위의 명령어를 통해 실행할 수 있고, 그렇지 않다면 아래의 명령어로 실행할 수 있습니다.

mysql.server start

실행 중인 MySQL 서버를 종료시키기 위해서는 실행 명령과 동일하게 종료 명령을 입력해야 합니다.

brew services stop mysql

mysql.server stop

실행 방법에 따라 알맞은 명령어로 MySQL 서버를 종료시킬 수 있습니다.

2. MySQL 실행

하지만 결국 Root의 비밀번호를 재설정하기 위해서는 MySQL 서버에 접속해서 Root 계정의 비밀번호를 변경해주어야 합니다. 비밀번호를 모르는데 어떻게 접속할 수 있을까요?

이미지와 같이 MySQL 서버를 실행할 때 --skip-grant-tables 옵션을 사용하면, Root 인증 없이 MySQL 서버 실행이 가능합니다.

 

해당 옵션은 MySQL 서버에 접속할 때, 권한 체계를 무시하고 모든 사용자에게 루트 권한을 부여하는 옵션입니다. 편리한 옵션이라고 생각할 수 있지만, 데이터베이스와 테이블에 대한 모든 권한을 가지기 때문에 보안에 대한 위험이 크게 증가하게 됩니다. 보통 이 옵션은 MySQL 계정을 복구하거나 수정하는 경우에 사용됩니다. 그렇기에 Root 계정 비밀번호를 재설정할 때 해당 옵션을 사용할 수 있습니다. 모든 권한을 가짐으로 불필요한 작업이 발생할 수 있기 때문에 빠르게 작업을 수행한 뒤 해당 옵션을 해제시켜 주는 것이 좋습니다.

3. 비밀번호 재설정

보통 데이터베이스의 내용을 변경하기 위해서는 alter 명령어를 사용합니다. --skip-grant-tables 옵션은 데이터베이스에 접근하기 위한 임시적인 목적으로 사용되기에, 보안상 문제가 될 수 있는 모든 작업을 MySQL이 금지하도록 해두었습니다. 따라서 alter 명령에 대한 사용이 금지되어 있습니다.

 

테이블에 대한 수정도 위험한 작업이지만, 허용되어 있기에 이를 활용할 수 있습니다.

mysql -u root

update mysql.user set authentication_string=null where user='root';

mysql에 root 계정으로 접속 후 임시로 비밀번호를 NULL로 변경합니다.

flush privileges;

그리고 flush privileges 명령을 통해 사용자 권한에 대한 변경 사항을 적용합니다. 새로운 계정을 만들거나, 사용자에게 새로운 권한을 부여하거나, 사용자 계정을 삭제하거나, 권한을 변경한 경우 해당 명령을 사용하여 즉시 적용하도록 할 수 있습니다.

모든 권한을 부여하는 옵션을 사용하지 않은 채 mysql 서버를 재시작하고 비밀번호가 없는 root를 통해 접속하여 비밀번호를 재설정할 수 있습니다.

mysql -u root

alter user 'root'@'localhost' identified with caching_sha2_password by '새비밀번호';

 

4. 확인

mysql에서 나간 뒤 다시 접속할 때 앞서 설정한 비밀번호로 접속하면 성공적으로 접속된 것을 확인할 수 있습니다.

댓글
최근에 올라온 글
최근에 달린 댓글
«   2024/09   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
Total
Today
Yesterday