개발/DB

[mySQL] root 비밀번호 오류 초기화 간단설명, 초기화해도 안되는 경우

prpn97 2023. 7. 5. 18:27

mysql -u root로 접속하게 되면 처음에는 바로 접속이 되지만,

비밀번호를 설정하고 나서는 당연히 비밀번호를 입력해야 접속할 수 있다. 

 

내가 늘 쓰는 비밀번호를 입력했음에도 여러 시도를 해도 안돼서

비밀번호를 초기화하는 방법을 구글링해서 시도했다. 

아주 간단하게 설명해보겠다. 

 

root 패스워드 재설정

1. mysql.server stop 

mysql 서버를 중지한다. 

 

2. mysql.server start --skip-grant-tables

mysql 서버를 재시작하는데, 해당 옵션을 주면 root 인증없이 서버에 접근할 수 있다.

 

3. mysql -u root

옵션을 부여한 다음 시작했기 때문에 비밀번호는 생략된다. 

 

4. update mysql.user set authentication_string=null where user='root';

sql문을 통해 비밀번호를 초기화하는 과정이다. 

root권한이 있는 것은 아니기 때문에 비밀번호를 null 대신 바꾸진 못한다.

 

5. flush privileges

변경된 권한으로 설정해준다. 

 

6. mysql.server restart;

7.mysql -u root;

8.alter user 'root'@'localhost' identified with caching_sha2_password by '변경할 비밀번호';

비밀번호를 변경해준다. 

 

9. mysql -u root -p

이제 비밀번호가 재설정되었고 설정한 비밀번호로 시작할 수 있다. 

 

 

 

그런데.... 나는 쭉 잘 되다가 7번에서 막힌다. 

7번에서 동일하게 권한이 없다고 확인된다. null로 바꿀 때, flush privileges까지도 success가 확인되었음에도 불구하고

이후 mysql -u root하면 권한이 없어 막히고, mysql -u root -p로 빈 값을 입력하거나 null 등 여러가지 시도를 해봤지만

여전히 안된다. 이상한데서 힘을 빼고 있어서 화가 많이 났다. 2시간넘게 씨름하다가 결국 안되서 시도한 방법이 있다....

 

 

 

... 

삭제 후 재설치 ^^

그냥 완전히 다 밀어버리고 새로 설정하는게 더 빠르겠다.. 이제 내가 해결한 ..? ^^ 방법이다. 

1. brew uninstall mysql

바로 삭제해준다.

 

Error: Could not remove mysql keg! Do so manually:

  sudo rm -rf /opt/homebrew/Cellar/mysql/8.0.33_3

 

2. 메세지가 확인되어서 그대로 입력해주었다.  sudo rm -rf /opt/homebrew/Cellar/mysql/8.0.33_3

강제로 mysql을 삭제하는 것이다. 이번엔 다른 메세지가 확인되었다. 

brew uninstall mysql

Error: No such keg: /opt/homebrew/Cellar/mysql

mysql을 이미 삭제했기 때문에 확인할 수 없다는 메세지인 것 같다. 

 

3. 확실하게 하기 위해서 홈브류 내에 있는 opt, var 등의 디렉토리에서 mysql이 있다면 전부 rm -rf로 삭제해준다.

 

4. brew install mysql 로 재설치한다.

 

 

이제 root 비밀번호 설정 과정이다. 

1. cat /opt/homebrew/var/mysql/*.err | grep "temporary password"

솔직히 하라고 해서 하지만 이게 임시비밀번호를 설정한게 맞는지 모르겠다.

 

2. mysql -u root

여기서 돼야 하는데 난 또 막혔다. 현기증난다. 

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)

 

무언가 소켓을 통해 서버에 접속할 수 없다는 그런 메세지인 것 같은데..

처음 시작할 때 메세지를 확인해보니 root 패스워드가 설정되어있지 않다고 

To secure it run:    mysql_secure_installation 를 하라고 하니, 해준다. 

 

3. 이젠 놀랍지도 않다. 안된다. 비밀번호를 치라는데, 여전히 2번의 에러가 발생한다.

root 비밀번호를 아직 설정을 안했으니 빈 값도 쳐보고, temporary password도 쳐보고 다 안된다.

 

mysql.server start  를 다시 하게 되면 시작이 되는가 싶더니.. 

Starting MySQL

./opt/homebrew/Cellar/mysql/8.0.33_3/bin/mysqld_safe: line 144: /opt/homebrew/var/mysql/Joys-MacBook-Air.local.err: Permission denied

 ERROR! The server quit without updating PID file (/opt/homebrew/var/mysql/Joys-MacBook-Air.local.pid).

 

또 어디선가 권한 관련된 오류다. 

 

4. sudo pkill mysqld 로 현재 실행중인 mysql의 프로세스를 다 종료한다. 

 

5. ls -ld /private/tmp

drwxrwxrwt  9 root  wheel  288  7  5 17:43 /private/tmp

여기서 drwxrwxrwt 가 되어있어야 권한이 부여된 것인데, 나는 되어있었다.

다르게 확인된다면 별도로 구글링해보자..

 

sudo chown -R seunghwankim /opt/homebrew/var/mysql/

이게 아마 권한을 강제로 부여하는 것 같다. 내 맥 id가 seunghwankim 이다. 

 

6. 다시 mysql.server start를 했는데 success가 뜨긴 하는데.. 

mysqld_safe A mysqld process already exists 라고 이미 mysqld_safe라는 프로세스가 존재한다고 한다..

 

sudo pkill mysqld,   sudo pkill mysqld_safe 해봐도 동일하다. 

sudo pkill -9 -f mysql 여기까지도 동일한데,

sudo pkill -9 -f mysqld_safe 이 이후 접속이 가능했다. 

그냥 처음부터 강제로 박아버리자.. 

 

드디어 몇 시간의 노고 끝에 mysql -u root로 접속이 되었다. 

 

비밀번호 재설정은 다음과 같다.

ALTER USER 'root'@'localhost' IDENTIFIED BY '변경할 비밀번호'

FLUSH PRIVILEGES

이 이후 mysql -u root -p로 변경된 비밀번호로 잘 세팅되었다.

728x90