DataBase
[MySQL] 비밀번호 초기화
메성
2020. 4. 2. 02:43
반응형
비밀번호 초기화
- 비밀번호 변경
//MySQL 8.0.15 이상
update mysql.user set authentication_string='변경 비밀번호' where user='root';
- 권한 적용
flush privileges;
- 다시 접속하면 아래와 같은 오류 메시지가 나타나는 경우가 있다.
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
- 위 오류 메시지는 비밀번호가 틀렸다고 예상할 수 있는데.. 방금 변경했는데 왜 틀렸다고 나올까? 계정 테이블을 확인해보자.
select authentication_string from user;
- 확인 결과, 비밀번호가 변경되었지만, 해쉬화가 되지 않아 암호화되지 않고 그대로 저장되어 있는 것을 볼 수 있다.
- 이를 해결해보자
비밀번호 초기화 해결방법
-
MySQL을 멈춘다.
sudo /usr/local/mysql/support-files/mysql.server stop
-
MySQL 서버 승인을 생략하는 옵션을 추가하여 시작한다.
sudo /usr/local/mysql/support-files/mysql.server start --skip-grant-tables
-
Root 유저로 MySQL에 접속한다.
cd /usr/local/mysql/bin ./mysql -u root
-
mysql 데이터베이스를 사용한다.
use mysql;
-
root 유저 비밀번호를 NULL로 변경한다.
update mysql.user set authentication_string=null where user='root';
- null로 변경하는 이유는 MySQL 서버를 정상적으로 다시 실행했을 때(승인 생략 옵션 없이) 비밀번호 없이 바로 접속하기 위함이다.
-
변견된 권한을 설정한다.
flush privileges;
-
MySQL을 나간다.
exit
-
MySQL을 다시 접속한다.
./mysql -u root ./mysql -u root -p
- 비밀번호가 설정되어 있지 않으니 아무거나 입력해도 접속가능하다.
-
비밀번호를 변경한다.
update mysql.user set authentication_string=n'1234' where user='root';
- 비밀번호 변경 후 다시 user테이블에 authentication_string 컬럼을 조회하면 해쉬화가 된 것을 확인할 수 있을 것이다. 'select authentication_string from user;'
-
비밀번호가 정상적으로 변경되었으면, MySQL을 나간 후 변경된 비밀번호로 접속하자.
반응형