이 포스팅은 mysql-installer-community-8.0.29.0.msi 실행시 '이 제품에 대해 다른 버전이 이미 설치되어 있습니다. 이 버전의 설치를 계속할 수 없습니다. 이 제품의 기존 버전을 구성하거나 제거하려면 제어판의 [프로그램 추가/제거]를 사용하십시오.' 라는 에러 메세지가 떠서 작성하였다.
예전에 mysql을 다운받아 설치했었는데, root 비밀번호를 잊어버렸다. 그리고 그때 설치 옵션을 개발자 옵션으로 진행하지 않고 커스텀 옵션으로 진행해서인지 mysql 비밀번호 초기화 과정을 제대로 진행할 수 없었다.
mysqld --console --skip -grant --shared-memory
비밀번호 없이 mysql에 접속하게 해주는 명령어라고 한다.
관리자 권한으로 접속한 cmd 창에서 mysqld.exe 파일이 있는 위치 (C:/Program file/MYSQL/MYSQL SERVER 8.0/bin) 에서 명령어를 입력하면 원래는 mysqld가 실행된 다음 비밀번호를 변경해야 하는데 실행되지 않고 다음과 같은 콘솔이 떴다.
2022-07-16T08:04:50.966335Z 0 [System][MY-010116] [Server] C:\Program Files\MySQL\MySQL Server 8.0\bin\mysqld.exe (mysqld 8.0.29) starting as process 27040
2022-07-16T08:04:51.004870Z 1 [System][MY-013576] [InnoDB] InnoDB initialization has started.
2022-07-16T08:04:51.006904Z 1 [ERROR][MY-012271] [InnoDB] The innodb_system data file 'ibdata1' must be writable
2022-07-16T08:04:51.007049Z 1 [ERROR][MY-012278] [InnoDB] The innodb_system data file 'ibdata1' must be writable
2022-07-16T08:04:51.007665Z 1 [ERROR][MY-010334] [Server] Failed to initialize DD Storage Engine
2022-07-16T08:04:51.008071Z 0 [ERROR][MY-010020] [Server] Data Dictionary initialization failed.
2022-07-16T08:04:51.008193Z 0 [ERROR][MY-010119] [Server] Aborting
2022-07-16T08:04:51.010368Z 0 [System][MY-010910] [Server] C:\Program Files\MySQL\MySQL Server 8.0\bin\mysqld.exe: Shutdown complete (mysqld 8.0.29) MySQL Community Server - GPL.
읽어보니 innoDB 에서 에러가 생긴것 같았는데 여러가지 방법을 시도해도 해결이 안됐다.
그때 내 머릿속엔 MYSQL을 다시 설치하는데 기존의 root 비밀번호 설정이 남아있으면 어떡하지? 라는 것 뿐이었다. mysql을 완전삭제 하고 싶은 마음에 mysql 8.0 완전삭제 등으로 검색해서 삭제를 진행했다.
그리고 mysql community installer를 실행시켰더니
'이 제품에 대해 다른 버전이 이미 설치되어 있습니다. 이 버전의 설치를 계속할 수 없습니다. 이 제품의 기존 버전을 구성하거나 제거하려면 제어판의 [프로그램 추가/제거]를 사용하십시오.'
라는 오류가 뜨면서 mysql community installer 자체가 실행이 안되는 것이었다.
그래서 'mysql 레지스트리 삭제 재설치 오류'를 검색하자 비슷하지만 나와는 다른 오류가 난 분들이 있었다. 그분들의 포스팅을 참조해서 에러를 해결하려고 했다.
mysql-installer-community-8.0.29.0.msi 파일이 있는 폴더로 이동한 다음 아래 코드를 실행시키면 msilog.txt 파일이 같은 위치에 생성된다.
msiexec /i mysql-installer-community-8.0.29.0.msi /l*v msilog.txt
다른 사람들은 msilog.txt 에서 레지스트리 에러 부분을 정확히 짚어주고, 레지스트리 편집기에서 그 에러 부분을 삭제하면 된다고 하는데 나의 로그 에는 알아들을수 없는 에러메세지 뿐이었다. 어떤 부분이 에러라는 걸 알려주는 로그가 없었다. 그래서 나는 계속 검색을 하며 마이크로소프트 문제 해결 마법사로도 해결해보려 했지만 되지 않았다.
7시간째 mysql root 비밀번호 초기화 -> 실패 -> mysql 삭제 -> 오류를 해결하고 있자니 정신이 나갈 거 같았다.
오류를 해결하려는 나의 혼돈과 공포가 반영된 검색창...
그런데 생각해보니 이상했다. 나는 제어판에서 installer가 설치되어있는 걸 봤었는데 레지스트리를 삭제하고 나니 installer 가 내가 지우지도 않았는데 없어져있었다.
나는 레지스트리 편집기에서 mysql installer 를 검색했다. 그랬더니 mysql installer 폴더가 나왔다. 내용물을 보니 "18시 (2시간 전) 실행" 된 기록 뿐이었다. 2시간 전 실행 기록이라니?? 2시간 전이면 적어도 이 오류(이 제품에 대해 다른 버전이 이미 설치되어 있습니다.) 가 발생하기 전에 실행한 기록이었다.
그렇다면 레지스트리 편집기에서 mysql installer 폴더 (2시간 전 실행 기록만 남아있고 이 외엔 아무것도 없음) 를 삭제하면 어떻게 될까?
나는 레지스트리를 또 삭제했다가 더 지옥에 빠지기 vs 이대로 아무것도 안해도 이미 지옥임 상태에서 고민하다가 전자를 선택했다.
레지스트리 편집기에서 mysql installer 폴더를 지운다음, 다시 mysql-installer-community-8.0.29.0.msi 파일을 실행시켰더니 정상 실행됐다!
!!!
정말 죽다 살아난 기분이었다. 레지스트리에 mysql installer 실행된 기록이 남아있어서 이미 설치된 제품이 있다는 오류가 났나보다.
다시 설치할때는 프로젝트 팀원들이 공유해준 포스팅을 참조해서 설치했다. custom이 아니라 developer 옵션으로 진행하니 custom으로 선택해서 설치했던 것보다 더 많은 프로그램이 설치되었다. 아무튼 정상적으로 설치가 되어서 정말 다행이었다.
오늘의 깨달음 : mysql root 비밀번호를 잊어버리면 개고생이다...
아유,,, 고생 하셨습니다
나중에 시간 나면 도커로 mysql 실행시키는것을 한번 알아보면 좋을것 같아요