- 시스템환경: macOS M1
- brew를 통해 mysql 설치
mysql -u root -p
명령어를 입력하니 아래의 사진과 같은 에러가 발생했다.
mysql에서 옳은 비밀번호를 입력했음에도 불구하고 아래의 에러코드가 떴다. mysql 비밀번호 맞는데 되지 않는 상황이다🥲
(28000): Access denied for user ‘root’@‘localhost’ (using password: YES)
Spring Boot 애플리케이션 실행 실패 로그에 따르면, Flyway가 초기화하는 과정에서 데이터베이스 연결을 얻는 데 실패했다는 것을 알 수 있다. 오류 코드 28000
과 메시지 Access denied for user 'root'@'localhost' (using password: YES)
는 데이터베이스에 로그인하는 과정에서 사용자 이름이나 비밀번호가 정확하지 않다는 것을 나타낸다.
보통 비밀번호를 입력했을 때, 비밀번호가 틀렸다면 using password: YES가 뜨고 입력하지 않았다면 NO로 나온다고한다.
application.properties
또는 application.yml
파일에서 데이터베이스 URL, 사용자 이름, 비밀번호가 정확한지 확인한다.비밀번호를 재설정 하기 위해 mysql -u root
로 mysql에 접속하려고 시도하였지만 이 명령어 조차 에러를 뱉어내서 mysql을 아예 밀어버리고 재설치하기로 했다.
brew services stop mysql
brew uninstall
ps aux | grep mysql
이 명령어의 출력에서 grep mysql을 제외하고 다른 MySQL 관련 프로세스가 나타나지 않아야 한다. 그래도 나타난다면, 해당 프로세스의 PID(프로세스 ID)를 사용하여 강제로 종료할 수 있다:
sudo kill -9 [PID]
여기서 [PID]는 종료하려는 프로세스의 ID 번호를 의미한다. 예를 들어, 82364라는 PID를 가진 프로세스를 종료하고자 한다면, sudo kill -9 82364 명령어를 사용한다.
모든 제거 과정을 마치고 나면, brew list, ps aux, find 명령어들을 사용하여 MySQL이 완전히 제거되었는지 최종적으로 확인.
MySQL 프로세스가 grep mysql 명령을 제외하고 나타나지 않고 있다. 이는 MySQL 서버 프로세스(mysqld)가 더 이상 실행되고 있지 않음을 의미한다. 그러므로 MySQL 관련 프로세스는 성공적으로 종료된 것이다.
sudo rm -rf /opt/homebrew/var/mysql
sudo rm /opt/homebrew/etc/my.cnf
sudo rm -rf /opt/homebrew/etc/my.cnf.d
sudo rm -rf /opt/homebrew/Cellar/mysql
sudo find / -name 'mysql' -exec rm -rf {} +
🚨 주의사항 🚨
brew install mysql
mysql 성공적으로 설치되었면 다음단계로 넘어가자.
brew services start mysql
mysql_secure_installation
이 스크립트는 MySQL을 보다 안전하게 만들기 위한 여러 단계를 안내해준다. 초기 비밀번호 설정, 익명 사용자 삭제, 원격 루트 로그인 비활성화 등의 과정을 진행할 것임.
0 입력: LOW 수준을 선택합니다.
1 입력: MEDIUM 수준을 선택합니다.
2 입력: STRONG 수준을 선택합니다.
숫자를 입력하면 Estimated strength of the password: 50
라는 문장이 등장하는데, 비밀번호의 강도는 50으로 추정된다는 것이다. 제공된 비밀번호로 계속 진행하려면 'y' 또는 'Y'를 누르고, 그렇지 않으면 다른 키를 누르면된다.
익명 사용자는 누구나 사용자 계정을 만들 필요 없이 MySQL에 로그인할 수 있게 해주는 기능으로, 주로 테스트 목적이나 설치 과정을 조금 더 쉽게 하기 위해 제공된다.
Remove anonymous users? (Press y|Y for Yes, any other key for No) :
익명 사용자를 제거하시겠습니까? (예를 원하면 'y' 또는 'Y'를, 아니면 다른 키를 누르십시오)
테스트 데이터베이스(Test Database)란?
데이터베이스는 'test'라고 불리며, 어떤 사용자든지 접근할 수 있도록 기본 설정되어 있다. 이 역시 테스트 목적으로 제공되며, 보안을 위해 실제 운영 환경에서는 제거하는 것이 좋다.
Remove test database and access to it? (Press y|Y for Yes, any other key for No) :
테스트 데이터베이스와 그에 대한 접근 권한을 제거하시겠습니까? (예를 원하면 'y' 또는 'Y'를, 아니면 다른 키를 누르십시오):
mysql_secure_installation 스크립트가 변경 사항을 적용하기 위해 권한 테이블을 새로고침(reload) 할 것인지를 묻고 있다.
Reload privilege tables now? (Press y|Y for Yes, any other key for No) :
mysql 비밀번호를 맞게 설정했는데도 이런경우가 종종있다고 한다. 보통의 경우는 mysql --skip-grant-tables
와 같은 명령어로 인증 없이 mysql에 진입하여
ALTER USER 'root'@'localhost' IDENTIFIED BY '새 비밀번호';
와 같은 명령어로 해결하는것 같으나, 나의경우 되지 않아서 아예 밀고 새로 다시했다.
이전에 설정했던 비밀번호와 다시 설치한 mysql의 비밀번호 설정의 유효성검증이달랐다.
환경설정 문제로 더이상 힘들고싶지 않다..ㅎ
남은공부나 마저 하러가야징🥲