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로 변경된 비밀번호로 잘 세팅되었다.
'개발 > DB' 카테고리의 다른 글
[sequelize] 서비스 - 모델 로직 분리, 리팩토링 과정 (0) | 2023.10.13 |
---|---|
[sql] 다른 schema 간 DB table 복사방법 (0) | 2023.08.26 |
[TypeORM] Nest.JS 없이 Node.JS + TypeORM 기본 세팅 (0) | 2023.08.02 |
[오류 해결]Error: Bind parameters must not contain undefined. To pass SQL NULL specify JS null (0) | 2023.06.14 |
[MySQL] 내가 보기 위해 만든 SQL CRUD 구문 정리 (0) | 2023.05.29 |