본문 바로가기
다른 DBMS/MySQL&MariaDB

root 비밀번호 분실시 재설정하는 법(mysql 8.0 기준)

by 취미툰 2024. 12. 19.
반응형

안녕하세요.

존재유무도 잘 몰랐던 개발서버에 깔려있던 mysql에 간단한 패치를 할 일이 생겨 접속시도를 해보았는데, 아무런 정보가 없어서 db내에 접속을 못하고 있었습니다.

개발 서버이기도 하고, 패치 중이라 서비스를 내렸다 올리는거에 대해 부담이 없는 상황이라 root 패스워드를 아예 재설정하기로 하였고 그 방법을 정리해보았습니다. 이전버전도 사용가능할 것같습니다.

 

*해당 작업은 db를 재기동이 필요합니다.*

* 모든 작업은 root로 수행합니다*

DB 버전 : Mysql 8.0.36

 

1.DB를 내립니다.

서비스(systemctl)로 등록되있는 상태여서 해당 명령어로 내려줍니다.

systemctl stop mysqld

 

2./etc/my.cnf에 아래 내용을 추가합니다.

아래 옵션은 table grant주는 옵션을 생략하고 db를 open하는 명령어입니다. 해당옵션을 사용하면 유저들은 패스워드입력없이 db에 접속할 수 있게 됩니다.

[mysqld]
skip-grant-tables

 

 

3.db를 기동합니다.

systemctl start mysqld

 

4.db 접속 후 root의 패스워드를 변경합니다.

 

mysql -uroot -p
Enter password: [엔터]
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 22
Server version: 8.0.36 Source distribution

Copyright (c) 2000, 2024, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>

 

mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec)

mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '새로운 패스워드';
Query OK, 0 rows affected (0.00 sec)

mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)

 

5.2번에서 설정한 my.cnf 옵션을 다시 주석처리하고 db 재기동

#[mysqld]
#skip-grant-tables

 

systemctl stop mysqld
systemctl start mysqld

 

완료.

 

유용할 것같습니다.

 

 

참고 :

https://velog.io/@sonaky47/mysql-root-%ED%8C%A8%EC%8A%A4%EC%9B%8C%EB%93%9C-%EB%B6%84%EC%8B%A4%ED%96%88%EC%9D%84%EB%95%8C-ubuntu

 

mysql root 패스워드 분실했을때 (ubuntu)

오랜만에 들어가보아야하는 mysql 서버가 있었는데 패스워드를 분실하여 접속이 안됨 ㅠㅠ mysql version은 mysql Ver 8.0.27 for Linux on x86_64 (MySQL Community Server - GPL)/etc/mysql/mysql.

velog.io

 

반응형

댓글