Access denied for user ‘root’@’localhost’ (using password yes) MySQL

MySQL 사용 시 root 계정 비밀번호를 잃어버렸을 때 당혹스러워 이리저리 검색을 하다가 문제를 하결하였다.

해당 내용은 다음 링크와 같다.

https://bobcares.com/blog/access-denied-for-user-rootlocalhost-using-password-yes-mysql/

  1. mysql 서비스를 중지한다.
    sudo systemctl stop mysqld
  2. my.cnf 파일을 수정한다. (나의 경우 파일 경로 : /etc/my.cnf)
    파일을 찾을 수 없을 경우 sudo find / -name my.cnf 명령어로 파일을 찾는다.
  3. my.cnf 파일을 열어 [mysqld] 섹션 하단에 skip-grant-tables 를 추가한다.
    해당 옵션을 추가하면 권한을 확인하지 않고 로그인이 가능해진다.
  4. mysql 서비스를 시작한다.
    sudo systemctl start mysqld
  5. mysql에 로그인한다.
    mysql -u root
  6. 권한 테이블을 reload 시켜 바로 적용시킨다.
    flush privileges;
  7. root 계정에 비밀번호를 수정한다.
    ALTER USER ‘root’@’localhost’ IDENTIFIED BY ‘new_password’;
  8. 수정한 권한 정보를 바로 적용시킨다.
    flush privileges;
  9. my.cnf 파일에 추가했던 skip-grant-tables 옵션을 삭제한다.
  10. mysql 서비스를 재시작 시킨다.
    sudo systemctl restart mysqld