오랜만에 AWS RDS를 사용하지 않고 터미널에서 mysql을 사용하려던 중 password를 까먹어서 재설정을 해야하는 상황이 생겼다.
mysql -u root -p

일단 MySQL 서버를 정지했다.
sudo mysqld_safe --skip-grant-tables
위 명령을 실행하여 MySQL을 권한없이 실행한 후에 새로운 터미널을 열어서 다음 명령어를 실행한다.
mysql -u root
를 실행하면 password 없이 MySQL에 접속할 수 있다고 검색 결과로 많이 나와있었는데 나는 잘되지 않았다.
따라서 내가 해결했던 방법을 적으려고한다.
mac 기준 homebrew로 mysql을 설치했기 때문에 homebrew 기준으로 password 재설정하는 법을 작성하겠다.
brew services stop mysql
2.MySQL 데이터 디렉토리 제거
MySQL 데이터 파일 확인
which mysql
/opt/homebrew/bin/mysql 또는 /usr/local/var/mysql 에 위치한다.
sudo rm -rf /usr/local/var/mysql
sudo rm -rf /opt/homebrew/bin/mysql
brew uninstall --force mysql
나는 MySQL을 초기화시키고 관련 모든 파일과 경로를 삭제하는 방법을 사용했다.
brew install mysql
brew services restart mysql
mysql -uroot
서비스를 재시작하거나 mysql 접속을 시도할 시에 이런 에러가 나올 수 있다.
ERROR 2002 (HY000): Can't connect to local server through socket '/tmp/mysql.sock' (2)
이 오류는 MySQL 클라이언트가 지정된 소켓 경로에서 MySQL 서버에 연결하지 못했을 때 발생한다.
mysql.sock 파일이 어떤 경로에 있는지 확인해야한다.
mysql_config --socket
/tmp/mysql.sock
MySQL 서버 PID 파일을 찾을 수 없는 에러는 MySQL이 실행 중이지 않거나 PID 파일의 위치를 찾을 수 없을 때 발생한다.
ERROR! The server quit without updating PID file (/usr/local/var/mysql/사용자컴퓨터이름.pid)
서버의 상태를 확인한다.
brew services list
만약 stopped로 되어있다면 서버를 재시작해야한다.
brew services start mysql
(분명 여기서 가장 힘들게 했던 오류코드 1이 나올 가능성이 크다.)
오류코드 1 해결 후 서버가 시작되면 아래와 같은 파일을 찾아 삭제해준다.
MySQL 설정파일 위치 찾기
mysql --verbose --help | grep my.cnf
/etc/my.cnf /etc/mysql/my.cnf /opt/homebrew/etc/my.cnf ~/.my.cnf
모두 삭제해주기
sudo rm -rf /etc/my.cnf
rm -rf /usr/local/etc/my.cnf
rm -rf /usr/local/var/mysql
sudo rm -rf /usr/local/mysql*
그리고 3번 과정으로 돌아가서 진행을 한다.
mysql에 정상적으로 접속을 했다면, 비밀번호를 재설정해줘야한다.
UPDATE mysql.user SET authentication_string=password('새로운비밀번호') WHERE user='root' AND Host = 'localhost';
FLUSH PRIVILEGES;
MySQL 8.0 버전 이상에서는 password() 함수가 사라지고, 대신 mysql_native_password로 비밀번호를 설정하는 방법이 변경되었다고한다.
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY <'새로 설정할 password'>;
Query OK, 0 rows affected (0.01 sec)
mysql>
다시는 password를 분실하지 않아야겠다고 다짐 또 다짐했다.
MySQL 전체 초기화(완전삭제)
중요 : 모든 경로, 파일들 삭제해줘야함
MySQL 재설치
MySQL 시작 및 접속
비밀번호 설정
접속확인