SQL/MySQL

[MySQL,MariaDB] root 비밀번호 분실시 변경하기

http://portfolio.wonpaper.net 2021. 12. 8. 21:30

우선 필자는 윈도우 환경에서 설치한 mariadb 5.5 버전을 기준으로 설명한다.

 

1. 서비스 환경에서 mariadb 를 중지한다.

 

혹은, 작업관리자 내 백그라운드 프로세서중에 mysqld.d 가 실행중인지 확인하고 실행중이면 끝내기한다.

 

2. cmd 창을 띄우고, mysqld.exe --skip-grant

3. 또다시 다른 cmd 창을 띄우고, mysql.exe 를 실행한다.

 

mysql> use mysql;
mysql> update user set password=password('새비번') where user='root';
mysql> flush privileges;
mysql> quit;

 

MariaDB [mysql]> set password for root@'localhost' = PASSWORD('1111');
Query OK, 0 rows affected (0.015 sec)

MariaDB [mysql]> flush privileges ;
Query OK, 0 rows affected (0.002 sec)

MariaDB [mysql]> quit

 

4. mariadb 서버를 재시작한다.

/bin/ net start mariadb

 

그런데 만약,

ERROR 1045 (28000): access denied for user 'root'@'localhost' (using password: YES)

이런식으로 에러가 나오고, 접속이 또 안된다면 root 비번을 아예 없애는 코드는 아래의 코드이다.

 

mysql -u root -p 하고 password : 암호창 에서 그냥 빈값입력하면 로그인이 된다.

 

위의 mysql.exe 화면창에서

mysql> flush privileges;
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '';
mysql> flush privileges;
mysql> quit;

alter user 'root'@'localhost' IDENTIFIED WITH mysql_native_password by '변경할비번';

flush privileges;

quit;

 

 

(mariadb)
alter user 'root'@'localhost' IDENTIFIED WITH mysql_native_password as PASSWORD('비밀번호');

(mysql)
ALTER USER 'user'@'localhost' IDENTIFIED WITH mysql_native_password BY '비밀번호';

 

 

상기 코드처럼 암호값이 없는 빈값을 update 시켜서 활용하도록 한다.

 

참고 : https://jemmaa.tistory.com/26

참고 : https://wrkbr.tistory.com/623

참고 : https://unix.stackexchange.com/questions/58655/turn-off-skip-grant-tables-in-mysql

참고 : https://linked2ev.github.io/database/2021/06/12/MariaDB-ERROR-1698-(28000)-Access-denied-for-user-'root'@'localhost'/ 

참고 : https://solbel.tistory.com/663