오랜만에 MySQL WorkBench를 사용하려고 하니 비밀번호를 까먹는 불상사...가 발생해서 이걸 해결하는 과정을 자세하게 작성해보려고 합니다.

혹시나 저와 같은 문제를 겪으시는 분들이 이 글을 통해 해결하실 수 있었으면 좋겠습니다!

 

+ Windows, MySQL 8.0.26 버전을 기준으로 설명합니다.

 

목차


    0. 오류 확인

     

    새로운 Connection을 만들어서 테스트를 해보려고 하니 연결할 수 없다는 말이 뜹니다.

     

     

    비밀번호를 넣어봐도 안됩니다. (이게 맞는 비밀번호인지는 확신이 들지는 않지만..)

    아.. 비밀번호 이거 맞는 것 같은데..

    여러분들은 비밀번호 잘 기억해두세요 ㅠㅠ

     

     

    테스트 건너뛰고 바로 생성하고, 실행해보면 위와 같은 메시지가 뜹니다.

    간단히 해석해보면 환경변수를 확인해보라는 이야기가 되겠네요..?

     


    1. 환경변수 설정

    문제를 파악했으니, 하라는 대로 해야겠죠?

    MySQL이 설치된 위치를 먼저 확인합니다.

     

     

    저는 C:\Program Files\MySQL에 설치되어있네요!

    여기서 MySQL Server 8.0\bin 위치가 우리가 설정햬야 할 환경변수 위치라고 생각하시면 됩니다!

    해당 폴더 내에 있는 exe 파일들을 사용해서 명령어를 실행하겠다는 그런 의미입니다.

     

     

    이제 환경변수 설정을 위해 내 PC를 오른쪽 클릭한 후에 속성 버튼을 누릅니다.

     

     

    그리고 고급 시스템 설정을 누릅니다.

     

     

    고급 탭의 환경변수 버튼을 누릅니다.

     

     

    하단 시스템 변수에서 Path를 찾아서 더블클릭합니다.

     

     

    그리고 아까 찾은 경로를 새로만들기 버튼을 통해서 넣어줍시다!

    C:\Program Files\MySQL\MySQL Server 8.0\bin

     

    여기까지 한 다음에 확인버튼을 눌러서 등록을 완료하면 끝입니다.

     

    실제로 cmd에서 mysql을 입력해서 버전을 확인해봅시다.

    기존에는 안됐던 명령어가 이제는 인식이 됩니다!!

     

    Before
    After

     

    이제 연결은 됐는데.. 아직도 권한 문제가 뜹니다...

    무엇이 문제일까요,,?

     

     


    2. 서비스 실행

    왜 제대로 작동이 안되나 싶어서 서비스탭에 들어갔습니다.

    여기서 MySQL을 찾아서 확인해보니.. 중지상태로 남아있더라구요??

    그래서 다시 실행하려고 하니 자꾸 다시 중지가 되는 문제가 발생했습니다.

     

     

    cmd를 관리자 권한으로 다시 열어줍시다.

     

     

    여기서 net start mysql을 쳐서 서비스를 실행해줍시다.

    (만약 여기서 안되면 mysqld --initialize를 통해 초기화를 먼저 하고 net start mysql을 해봅시다!)

     

     

    이제 서비스탭을 가면 잘 실행된 모습을 보실 수 있습니다!

     

     


    3. 진짜 비밀번호 찾기

    이제는 오류가 뜨는게 아니라 비밀번호를 입력하라는 창이 뜹니다!

     

    하지만 비밀번호를 맞게 입력했는데도 다음 화면으로 넘어가지지 않는 것을 보면 제가 알고있는 비밀번호가 틀렸나봅니다..

    본격적으로 비밀번호 초기화작업을 진행해봅시다!!

     

    아까 켜뒀던 관리자 권한이 있는 cmd에서 mysqld --initialize --console 을 입력해서 mysql 초기화를 해줍니다.

    (--console 옵션은 콘솔에 로그메시지를 띄우기 위해서 입력합니다!)

    근데 Aborting이 뜨네요..?

     

     

    메시지를 잘 보면 data폴더가 이미 존재해서 발생하는 오류가 생겼다는 것을 확인할 수 있습니다.

    바로 data폴더를 지워줍시다.

     

     

    만약 사용중이라면서 삭제가 되지 않는다면 서비스에서 MySQL을 중지시키고 다시 삭제하면 잘 삭제됩니다!

     

    다시 mysqld --initialize --console 명령어를 쳐줍시다!

    그럼 정상적으로 새로운 비밀번호가 생성됩니다!! (외우기 어려워보여도 나중에 변경해주면 됩니다 ㅎㅎ)

     

     

    이제 인증 생략 옵션을 넣어줍시다.

    mysqld --skip-grant-tables --console --shared-memory

     

    skip-grant-tables인증 생략 옵션이고, shared-memory서버의 공유메모리를 사용해서 접속하기 위함입니다.

     

     

    이제 새로운 관리자 cmd창을 켜서 mysql -u root를 입력해서 root 계정으로 mysql에 접속합니다.

     

    그리고 use mysql을 통해 mysql DB로 접근한 후에

    UPDATE user SET authentication_string=null WHERE user='root'; 

    명령어로 비밀번호를 없애줍시다.

     

     

    이제 caching_sha2 방식으로 암호화된 새로운 암호를 등록하기 위해 재시작을 해줍니다.

     

    그리고 똑같이 mysql에 접속해서 아래 명령어를 작성해줍니다.

    ALTER user 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY '비밀번호';

     

    위 명령어를 맨 처음부터 바로 하지 않은 이유는, 인증 생략 옵션을 넣고 mysql을 실행한 상태에서는 ALTER~ 명령어가 동작하지 않기 때문입니다.

     

     

    여기까지 잘 따라왔다면 cmd창을 모두 끕니다.

    만약 중간에 service를 중지할 일이 있었다면

     

    mysqld --initialize

    net start mysql

     

    명령어를 이용해서 다시 service를 실행해줍니다.

     

    이제 다시 workbench로 돌아가서 비밀번호를 입력하고 실행해줍니다!

    드디어.. 정상적으로 실행됩니다 ㅠㅠ 감격!!

     

     


    4. 참고자료

     

    mysqld Options

    Lists of all the options for mysqld.

    mariadb.com

     

    MySQL 한글매뉴얼

    5.13. 동일 머신에서 여러 대의 MySQL 서버 구동 시키기 5.13.1. 윈도우에서 여러대의 서버 구동 시키기  5.13.2. 유닉스엣 여러대의 서버 구동 시키기  5.13.3. 다중-서버 환경에서 클라이언트 프로그

    www.mysqlkorea.com

     

    MySQL 계열의 FLUSH PRIVILEGES 명령어

    Tech Note 정보 열린기술자 님이 작성하신 글입니다. 카테고리: [ MariaDB ] 게시됨: 11 January 2016 작성됨: 12 January 2016 최종 변경: 26 July 2017 조회수: 26301 MySQL이나 MariaDB를 사용하다보면 FLUSH PRIVILEGES라는

    sarc.io

     

    mysql_8_최초_설치_후_alter_user [AllThatLinux!]

    MySQL 8을 최초 설치 후 Database에 접속하려고 한다. 암호는 rpm 설치시에는 /var/log/mysqld.log 파일에 아래와 같이 출력된다. 2020-02-18T02:09:43.292948Z 0 [System] [MY-010910] [Server] /usr/sbin/mysqld: Shutdown complete (mys

    atl.kr

     

    MySQL root 계정 비밀번호 초기화

    MySQL 비밀번호 초기화 데이터베이스를 사용하다가 root 계정의 비밀번호를 분실하는 것은 정말 큰 일이다. 그나마 오라클의 경우 OS인증을 통해 좀 더 쉽게 처리할 수 있지만 MySQL은 갈길이 좀 멀

    goodteacher.tistory.com

     

    반응형
    • 네이버 블로그 공유하기
    • 네이버 밴드에 공유하기
    • 페이스북 공유하기
    • 카카오스토리 공유하기