728x90
반응형

국비강의를 들었을 때 React 강의에서 nodejs를 사용해 본 적이 있었고

맛보기로 npm i 라던지...정말 기본적인 부분들만 알고 썼던 상태여서

기초부터 응용까지 학습하고 있었다.

 

오늘 AWS 세팅을 수월하게 마치고(과금위험 때문에 꼼꼼히 체크)

DB와 node.js 프로젝트를 연동하기 위한 세팅 후 npm start를 해보니

서버가 정상적으로 실행되다말고 에러를 마주하게 되었다.

이때부터 오랜만에 엄청난 삽질이 시작되었다.


에러 내용 :

Error: ER_ACCESS_DENIED_ERROR: Access denied for user ''@'localhost' (using password: NO)

...

code: 'ER_ACCESS_DENIED_ERROR',
errno: 1045,
sqlMessage: "Access denied for user ''@'localhost' (using password: NO)",
sqlState: '28000',
fatal: true

 


원인은 일단 pw가 없어서 권한이 거절되고 있는 상황이라고 나왔는데

애초에 ''로 username도 인식을 못하는 것 같았다.

뭔가 이상한데? 왜 공백이지?

권한부여도 mysql 8 버전부터 변경되었다고 해서

정상적으로 부여를 다 한 상태였는데..

 

MySQL 8이상 권한 부여 방식

GRANT ALL PRIVILEGES ON DB이름 TO 'username'@'localhost';
FLUSH PRIVILEGES;

 

기존 방식

GRANT ALL PRIVILEGES ON DB이름 TO 'username'@'localhost' IDENTIFIED BY 'password';

 

하지만 검색을 좀 더 해보니 dotenv(.env) 파일의 경로 설정도 중요한 부분이었던 것이다.

경로 설정 없이 app.js와 같은 형제 위치여서

별도로 세팅을 안한 config() 공백상태였는데 사실은 이게 문제였나보다.


해결 :

정말 허무하게도 MySQL, 터미털에서 열심히 삽질했지만

VScode에서 단 한줄 수정을 끝으로 해결했다.

app.js와 동일한 위치에 존재해서

'/'로 경로를 잡고 적는 것이 아닌 파일명 자체로 넣어줬다.

 

dotenv.config( {path: '.env} );

백, 프론트 모두 할 때 마다 느꼈던 건데

경로가 기본인 것 같지만 실수가 발생할 수 있는 부분인데

다른 경우에 비해 명확하게 에러가 나오지 않는 경우가 꽤 있어서

놓치지 않고 꼼꼼하게 봐야겠다고 또 한번 다짐하게 되었다.

 

 

연관 사이트
 

MySQL :: How to grant privileges to users in MySQL 8.0

How to grant privileges to users in MySQL 8.0 For this last technical post of the MySQL Community Advent Calendar 2022, I will explain how to grant privileges to users in MySQL 8.0. This is an important task for anyone who is responsible for managing a MyS

dev.mysql.com

 

728x90
반응형

+ Recent posts