데이터베이스에 접속하려고 하는데, root 패스워드를 잊어버렸을 경우가 있다.

이런 경우 패스워드를 리셋하는 방법이다. (MariaDB 기준)

 

1. MariaDB서비스 중지

sudo systemctl stop mariadb

 

2. MariaDB를 --skip-grant-tables 옵션을 주어 실행함 (MariaDB service unit file을 수정하여 실행)

- 아래 명령을 실행하면, MariaDB service unit file 이 텍스트 에디터로 열림

sudo systemctl edit --full mariadb

- 해당 파일에서 ExecStart 부분을 찾아 아래와 같이 --skip-grant-tables 옵션을 추가함

ExecStart=/usr/sbin/mysqld --skip-grant-tables $MYSQLD_OPTS

- 파일을 저장하고 텍스트 에디터를 종료함

 

3. MariaDB를 수정된 unit file을 이용하여 실행함

sudo systemctl start mariadb

 

4. 이제 권한체크 없이 어드민 태스크를 실행할 수 있게 됨. 아래와 같이 패스워드 없이 DB 접속 가능해짐

mysql -u root

 

5. MariaDB 서버에 접속하면, 'mysql' 데이터베이스로 스위치함

use mysql;

 

6. root 패스워드를 새로운 패스워드로 설정함

update user set authentication_string=password('new_password') where user='root';

 

7. flush privileges를 하여 변경 사항을 반영시킴

flush privileges;

 

8. MariaDB 서버 접속을 종료함

exit;

 

9. MariaDB 서비스를 중지

sudo systemctl stop mariadb

 

10. MariaDB service unit file 에서, --skip-grant-tables 옵션을 삭제함

- 아래 명령을 실행하면, MariaDB service unit file 이 텍스트 에디터로 열림

sudo systemctl edit --full mariadb

- 해당 파일에서 ExecStart 부분을 찾아, 추가했던 --skip-grant-tables 옵션 삭제함

ExecStart=/usr/sbin/mysqld $MYSQLD_OPTS

- 파일을 저장하고 텍스트 에디터를 종료함

 

11. MariaDB를 재실행함

sudo systemctl start mariadb

 

12. 이제 변경된 패스워드로 root 계정 접속이 가능하다.

mysql -u root -p

+ Recent posts