[MySQL] Windows 환경 root 비밀번호 변경 By starseat 2024-05-16 12:18:19 db Post Tags Windows 11 에서 설치한 MySQL root 비밀번호가 기억나지 않아 초기화 하면서 글을 남긴다. # 방법 1 ## 1. MySQL 서비스 종료 작업관리자 - 서비스 탭에서 MySQL 검색 후 서비스 종료(중지) ![image.png](/uploads/_temp/20240516/fa7180329b2c8ee7db6aed531c527134.png) ## 2. MySQL 설치 경로 이동 cmd 를 열어 MySQL 설치 경로로 이동한다. 보통은 ` C:\Program Files\MySQL\MySQL Server 8.0` 일 것이다. 이 후 `bin` 폴더로 이동한다. - 전체 경로: C:\Program Files\MySQL\MySQL Server 8.0\bin ## 3. 명령어 입력 cmd 에서 `C:\Program Files\MySQL\MySQL Server 8.0\bin` 경로에서 다음 명령어를 입력한다. ```text > .\mysqld.exe --initialize --console > .\mysqld.exe --skip-grant-tables --console --shared-memory ``` - 정상 로그 ```text PS C:\Program Files\MySQL\MySQL Server 8.0\bin> .\mysqld --initialize --console 2024-05-16T02:24:44.489639Z 0 [System] [MY-013169] [Server] C:\Program Files\MySQL\MySQL Server 8.0\bin\mysqld.exe (mysqld 8.0.31) initializing of server in progress as process 50932 2024-05-16T02:24:44.531478Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started. 2024-05-16T02:24:45.098548Z 1 [System] [MY-013577] [InnoDB] InnoDB initialization has ended. 2024-05-16T02:24:46.243325Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: :JiNiFT5tdMp PS C:\Program Files\MySQL\MySQL Server 8.0\bin> .\mysqld.exe --skip-grant-tables --console --shared-memory 2024-05-16T02:25:01.143799Z 0 [System] [MY-010116] [Server] C:\Program Files\MySQL\MySQL Server 8.0\bin\mysqld.exe (mysqld 8.0.31) starting as process 21668 2024-05-16T02:25:01.201403Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started. 2024-05-16T02:25:01.999359Z 1 [System] [MY-013577] [InnoDB] InnoDB initialization has ended. 2024-05-16T02:25:02.146662Z 0 [Warning] [MY-011311] [Server] Plugin mysqlx reported: 'All I/O interfaces are disabled, X Protocol won't be accessible' 2024-05-16T02:25:02.422574Z 0 [Warning] [MY-010068] [Server] CA certificate ca.pem is self signed. 2024-05-16T02:25:02.422807Z 0 [System] [MY-013602] [Server] Channel mysql_main configured to support TLS. Encrypted connections are now supported for this channel. 2024-05-16T02:25:02.447407Z 0 [System] [MY-010931] [Server] C:\Program Files\MySQL\MySQL Server 8.0\bin\mysqld.exe: ready for connections. Version: '8.0.31' socket: '' port: 0 MySQL Community Server - GPL. ``` - 비정상 로그 아래 그림 처럼 비정상 로그 출력시 `mysqld.exe` 가 아닌 `.\mysqld.exe` 로 입력해야 된다. ![image.png](/uploads/_temp/20240516/7638ea02e64b1fe5e538cee9a3540e5c.png) ## 4. 비밀번호 변경 ### 4.1. 비밀번호 초기화 **새로운 cmd 창을 관리자 권한으로 열어** 관리자 비밀번호를 **null** 로 변경한다. 아래 명령어 순서대로 mysql 에 root 권한으로 진입하여 변경한다. ```text > mysql -u root ``` ```text > use mysql; > UPDATE user SET authentication_string=null WHERE User='root'; ``` ```text > select authentication_string from user; > flush privileges; ``` - mysql 명령어 오류 만약 `mysql` 명령어가 안될 경우 **다시 MySQL 설치 경로의 bin 폴더로 이동**하여 입력한다. 여기서도 `.\` 를 붙여줘야 한다. ```text > cd c:\"Program Files\MySQL\MySQL Server 8.0\bin" ``` - 전체 실행 예시 ```text >.\mysql.exe -u root Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 7 Server version: 8.0.31 MySQL Community Server - GPL Copyright (c) 2000, 2022, Oracle and/or its affiliates. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> use mysql Database changed mysql> UPDATE user SET authentication_string=null WHERE User='root'; Query OK, 1 row affected (0.01 sec) Rows matched: 1 Changed: 1 Warnings: 0 mysql> mysql> select authentication_string from user; +------------------------------------------------------------------------+ | authentication_string | +------------------------------------------------------------------------+ | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | | NULL | +------------------------------------------------------------------------+ 4 rows in set (0.00 sec) mysql> flush privileges; Query OK, 0 rows affected (0.01 sec) mysql> mysql> quit Bye ``` ### 4.2. root 비밀번호 변경 위 순서대로 root 비밀번호를 null 로 변경 후에 이제 `mysql -u root -p` 를 입력 후에 비밀번호를 다시 지정한다. - 비밀번호 재설정 SQL ```sql ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY '새로운 비밀번호'; ``` - 실행 예시 ```text >.\mysql.exe -u root Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 8 Server version: 8.0.31 Copyright (c) 2000, 2022, Oracle and/or its affiliates. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'newpw123'; Query OK, 0 rows affected (0.02 sec) mysql> quit Bye ``` ## 5. 변경 확인 cmd 를 이용하거나 `DBeaver` 같은 툴을 사용하여 접속해본다. 나는 cmd를 열어두었으므로 바로 확인해 보았다. ```text >.\mysql.exe -u root -p Enter password: ******** Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 9 Server version: 8.0.31 MySQL Community Server - GPL Copyright (c) 2000, 2022, Oracle and/or its affiliates. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> exit Bye ``` # 방법 2 ## 1. 서비스 종료 ```text > net stop mysqld ``` 위 방법이 안될 경우 ```text // PID 확인 > tasklist | findstr "mysql" // PID 로 종료 (1111 에 PID 값 넣기) > taskkill /PID 1111 /F ``` ## 2. 비밀번호 초기화 ### 2.1. my-init.txt 파일 생성 mysql 설치 경로 + bin 폴더로 이동 후 `my-init.txt` 파일 생성 - my-init.txt 내용 ```text SET PASSWORD FOR 'root'@'localhost' = PASSWORD('새로운 비밀번호'); ``` ### 2.2. 명령 실행 ```text > .\mysqld.exe --defaults-file=my.ini --init-file=my-init.txt --console ``` `my.ini` 파일과 `my-init.txt` 파일의 경로가 맞는지 확인해 주어야 한다. ```text {mysqld 파일의 경로} --defulats-file={my.ini 파일의 경로} --init-file={my-init.txt 파일의 경로} --console ``` # 참조 - [https://one-step-a-day.tistory.com/141](https://one-step-a-day.tistory.com/141) - [MariaDB :: root 비밀번호 초기화 방법 (Bitnami 포함)](https://gogoma.tistory.com/entry/MariaDB-root-%EB%B9%84%EB%B0%80%EB%B2%88%ED%98%B8-%EC%B4%88%EA%B8%B0%ED%99%94-%EB%B0%A9%EB%B2%95-Bitnami-%ED%8F%AC%ED%95%A8) Previous Post [DBeaver] 메모리 이슈 해결 Next Post [mariadb] mac 에서 mariadb 설치 및 삭제