MariaDB "Cannot Connect to Database Server" 해결하기 (macOS)

Soyeon·2025년 3월 2일
1

🤯 문제 상황

Access denied for user 'root'@'localhost'

현재 청첩장 만들기 프로젝트에서 프론트엔드를 담당하고 있는데, 백엔드와 연결하려고 하면 내 데이터베이스가 계속 연결되지 않았다.

내가 구현한 API를 테스트하고 싶었지만, 내 노트북으로 할 수 없어서 다른 팀원에게 부탁해야 하는 번거로웠던 일이 있었다.

심지어 MariaDB를 삭제하고 다시 설치해도 해결되지 않았는데 다음 방법으로 해결할 수 있었다.

😌 해결 방법

이 에러는 MariaDB의 인증 방식과 권한 문제일 가능성이 크다.

1. sudo 사용해서 로그인하기

먼저 root 사용자의 권한을 확인하기 위해 관리자 권한으로 로그인해야 한다.

sudo mysql -u root -p

비밀번호 입력 후, 접속되면 다음 단계로 진행하면 된다

2-1. root 사용자의 인증 방식을 mysql_native_password로 변경

인증 방식을 기존 "auth_socket"에서 일반 패스워드 방식으로 변경할 수 있는데, '새로운비밀번호' 부분을 원하는 비밀번호로 변경하면 된다.

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '새로운비밀번호';
FLUSH PRIVILEGES;
exit
mysql -u root -p

필자는 이 방법으로 해결했지만, 여기서 해결이 되지 않는다면 다음 방법을 시도해봐야 한다.

2-2. MariaDB 비밀번호 초기화

만약 비밀번호를 잊었을 경우, 재설정 하는 방법도 있다.

  1. 먼저, MySQL을 중지시키고 비밀번호 없이 실행시킬 수 있도록 MySQL을 안전 모드로 실행한다.

    sudo systemctl stop mysql
    sudo mysqld_safe --skip-grant-tables --skip-networking &
  2. 새로운 터미널에서 MySQL에 접속해서 root 비밀번호를 다시 설정하면 된다.

    mysql -u root
    ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '새로운비밀번호';
    FLUSH PRIVILEGES;
    exit
  3. 다시 실행해서 로그인하기

    sudo systemctl restart mysql
    
    mysql -u root -p

다시 같은 문제가 발생하지 않으려면?

MariaDB를 다시 설치하거나 설정이 초기화되더라도 다시 같은 문제가 발생하지 않도록 예방하는 방법을 추가하자

MariaDB가 mysql_native_password를 기본 인증 방식으로 사용하도록 설정하기

설정 파일에서 기본 인증 방식을 mysql_native_password로 설정하면, MariaDB 재설치 후에도 같은 문제가 발생하지 않는다.

  1. 설정 파일 수정

    sudo nano /etc/mysql/my.cnf

    파일을 열고 아래 내용을 추가해준다.

     [mysqld] 
     default_authentication_plugin=mysql_native_password
  2. MariaDB 재시작

    sudo systemctl restart mariadb
profile
탄탄한 개발자로 살아남기🗿

2개의 댓글

comment-user-thumbnail
2025년 3월 2일

같은 문제가 발생한다면 참고하러 다시 오겠습니다. 좋은 정보 감사합니다!

답글 달기
comment-user-thumbnail
2025년 3월 2일

해결하느라 고생하셨습니다! 저도 똑같은 문제 발생하면 참고해볼게요.

답글 달기