MySQL 루트 사용자 권한 복원 개요
MySQL에서 루트(root) 사용자의 전체 권한을 실수로 잃어버렸다면 UPDATE 명령문을 사용하여 손쉽게 복원할 수 있습니다. 이 글에서는 단계별로 루트 계정의 모든 권한을 되돌리는 방법을 알아보겠습니다.
1단계: mysqld 중지 후 --skip-grant-tables 옵션으로 재시작
가장 먼저 현재 실행 중인 mysqld 서비스를 중지한 뒤, --skip-grant-tables 옵션을 붙여 다시 시작해야 합니다. 이 옵션은 권한 테이블을 로드하지 않고 서버를 구동하기 때문에, 권한이 없는 상태에서도 MySQL에 접속할 수 있게 해줍니다.
2단계: 비밀번호 없이 MySQL 서버에 접속
서버가 재시작되면 -p 옵션(비밀번호 입력) 없이 mysql 클라이언트만으로 mysqld 서버에 접속합니다. 이때 사용자 이름도 별도로 지정하지 않아도 됩니다.
3단계: UPDATE 명령으로 루트 권한 복원
mysql 클라이언트에 접속한 후 아래 명령을 실행하여 루트 사용자에게 전체 권한을 다시 부여합니다.
mysql> UPDATE mysql.user SET Grant_priv = 'Y', Super_priv = 'Y' WHERE User = 'root'; Query OK, 0 rows affected (0.04 sec) Rows matched: 1 Changed: 0 Warnings: 0
위 명령에서는 특히 슈퍼 권한(Super Privilege)을 활성화했습니다.
Super_priv = 'Y'
Grant_priv = 'Y'는 다른 사용자에게 권한을 부여할 수 있는 GRANT 권한을 의미하며, Super_priv = 'Y'는 서버 관리에 필요한 최상위 권한을 의미합니다.
4단계: FLUSH PRIVILEGES로 권한 새로고침
마지막으로 FLUSH PRIVILEGES 명령을 실행하여 변경된 권한 설정을 즉시 적용해야 합니다.
mysql> FLUSH PRIVILEGES; Query OK, 0 rows affected (0.18 sec)
이제 루트 사용자는 원래 가지고 있던 전체 권한을 정상적으로 사용할 수 있습니다. 작업이 완료되면 반드시 --skip-grant-tables 옵션 없이 MySQL 서버를 재시작하여 보안을 유지하는 것을 잊지 마세요.