
MySQL이나 MariaDB에 접속하려고 할 때 다음과 같은 오류 메시지를 본 적이 있으신가요?
ERROR 1045 (28000): Access denied for user 'username'@'localhost' (using password: NO)
이 오류는 데이터베이스에 접속할 권한이 없거나 비밀번호가 필요한데 입력하지 않았을 때 발생합니다. 오늘은 이 오류의 원인과 해결 방법을 살펴보겠습니다.
오류 메시지 이해하기
ERROR 1045 (28000): Access denied for user 'sinecure_sheeep'@'localhost' (using password: NO)
이 오류 메시지를 분석해 보면:
- ERROR 1045 (28000): 접근 권한 관련 오류 코드입니다.
- Access denied for user 'sinecure_sheeep'@'localhost': 'sinecure_sheeep'라는 사용자가 로컬 컴퓨터에서 접속을 시도했지만 거부되었습니다.
- (using password: NO): 비밀번호를 사용하지 않고 접속을 시도했다는 의미입니다.
해결 방법
1. 비밀번호 사용하여 접속하기
가장 간단한 해결 방법은 -p 옵션을 추가하여 비밀번호를 입력하는 것입니다.
mysql -u root -p
또는
mariadb -u root -p
이 명령어를 실행하면 비밀번호를 입력하라는 프롬프트가 표시됩니다.
2. 올바른 사용자 계정 사용하기
기본적으로 'root' 계정을 사용하여 접속을 시도하거나, 접속 권한이 있는 계정으로 시도해야 합니다.
mysql -u root -p
3. 비밀번호 재설정하기
비밀번호를 잊어버렸다면, 다음 단계를 따라 재설정할 수 있습니다.
1. MYSQL/MariaDB 서비스 중지
sudo service mysql stop
# 또는 MacOS에서
brew services stop mysql
2. 안전 모드로 시작
sudo mysqld_safe --skip-grant-tables &
3. 데이터베이스에 접속
mysql -u root
4. 비밀번호 변경
USE mysql;
ALTER USER 'root'@'localhost' IDENTIFIED BY '새비밀번호';
FLUSH PRIVILEGES;
EXIT;
5. MySQL/MariaDB 재시작
sudo service mysql restart
# 또는 MacOS에서
brew services restart mysql
4. 새 사용자 생성하기
관리자 권한으로 접속한 후 새 사용자를 생성하고 권한을 부여할 수 있습니다.
CREATE USER 'newuser'@'localhost' IDENTIFIED BY '비밀번호';
GRANT ALL PRIVILEGES ON *.* TO 'newuser'@'localhost';
FLUSH PRIVILEGES;
주의사항
1. 데이터베이스 서버가 실행 중인지 확인하세요.
# MySQL 상태 확인
sudo service mysql status
# 또는 MacOS에서
brew services list
2. MySQL과 MariaDB는 동일한 포트(3306)를 사용하므로 동시에 실행할 수 없습니다.
3. 개발 환경에서만 root 계정을 사용하고, 프로덕션 환경에서는 권한이 제한된 사용자 계정을 사용하는 것이 좋습니다.
결론
"Access denied" 오류는 대부분 인증 문제로 발생합니다. 위의 해결 방법들을 시도해 보고, 여전히 문제가 해결되지 않는다면 데이터베이스 로그를 확인하여 더 자세한 오류 정보를 얻을 수 있습니다.
MySQL과 MariaDB를 사용하실 때 참고하시면 좋을 것 같습니다. 즐거운 개발되세요!