데이터베이스에 접속하려고 하는데, 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
'DB' 카테고리의 다른 글
[DB] MariaDB 보안 설정 (0) | 2024.09.27 |
---|---|
[DB] MariaDB 인코딩 (0) | 2023.02.10 |
[SQLite] SQLite DB 한계 (0) | 2022.04.03 |
[InnoDB] cannot allocate memory for the buffer pool 에러 (0) | 2022.03.22 |
데이터베이스(DB) vs. 데이터베이스 관리 시스템(DBMS) (0) | 2021.12.20 |