얼토당토않은 실수를 해버렸다.
운영 중인 서버의 개발 서버에서 사용하지 않는 Database들을 삭제하는 과정에서
실수로 ROOT 계정을 포함해서 삭제해버린 것이다.
아뿔싸. 이미 때는 늦었다.
하지만 다행인 것은 실제 서비스 중이 아닌 개발 서버 환경이라는 것…;
root 계정 없이는 다른 계정 추가 삭제는 물론 데이터베이스 관리가 불가하기에
정말 난감한 상황이 아닐 수 없다.
하지만 손쉽게 복구할 수 있는 방법이 있으니 당황은 금물!
실수로 삭제한 root 계정을 복구하는 절차는 다음과 같다.
1. MySQL 혹은 MariaDB의 프로세스 종료
2. 인증 절차 없는 접속 모드로 DB 프로세스 시작
3. root 계정 추가
4. 추가한 root 계정에 모든 권한 부여
5. DB 프로세스 정상적으로 재시작
위와 같이 5단계로 구성되며 다음과 같은 명령어로 가능하다.
($는 리눅스 콘솔, >는 MySQL 콘솔)
$ps -ef | grep mysqld
이 명령어로 실행 중인 DB 프로세스의 pid를 알아낸다.
$kill -9 ‘프로세스 ID’로 프로세스 종료
$mysql –skip-grant &
위의 명령어로 인증 절차 없이 로그인 가능하게 실행
(혹은 mysqld_safe 스크립트가 이용되기도 한다. 서버 환경이나 설치 방식에 따라 상이)
$mysql -u root mysql
위의 명령어로 인증 절차 없이 MySQL 콘솔 접속
>use mysql;
위 명령어로 mysql database 선택
>insert into user (Host, User, Password) values (‘localhost’, ‘root’, password(‘사용할 패스워드‘));
위의 명령어로 삭제된 root 계정 추가
>grant all privileges on *.* to root@localhost with grant option;
위의 명령어로 생성된 root 계정에 모든 권한을 부여
>flush privileges;
위의 구문으로 변경된 모든 사항 적용
>exit;
exit 구문으로 MySQL 콘솔 종료
위의 절차를 마친 후 다시 정상적으로 MySQL 혹은 MariaDB 프로세스를 실행시켜주면
root 계정을 정상적으로 다시 사용할 수 있다.
정말 감사합니다 엄청 고생하다가 됐네요 ㅠㅠ
도움 되셨다니 기쁘네요^^;
저도 얼마나 당황을 했던지 ㅠㅠ