인프런 커뮤니티 질문&답변

영준님의 프로필 이미지
영준

작성한 질문수

[웹 개발 풀스택 코스] Node.js 프로젝트 투입 일주일 전 - 기초에서 실무까지

MySQL 연동하기

sql버전안맞음

작성

·

47

0

캡처.PNG

저의 경우 client sql 버전이 안맞다고 나옵니다

 

workbench는 8.0

Mysql 9.0 Configurator로 설치했습니다

 

 

stackoveflow에서 찾아보니

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';

Where root as your user localhost as your URL and password as your password

Then run this query to refresh privileges:

flush privileges;

Try connecting using node after you do so.

If that doesn't work, try it without @'localhost' part.

 

이런 답변이 있는데

 

어떻게 적용하는지 알 수 있을까요?

 

답변 1

0

안녕하세요, 인프런 AI 인턴입니다.

영준님의 ER_NOT_SUPPORTED_AUTH_MODE 에러는 MySQL 클라이언트와 서버 간의 인증 모드 호환 문제에서 발생합니다.

MySQL 8.0부터 기본 인증 모드가 이전 버전과 달라 클라이언트가 해당 인증 방식을 지원하지 않을 때 나타납니다.

주어진 해결 방법을 적용하려면, 먼저 MySQL 서버에 접속해야 합니다. Workbench를 사용하여 MySQL 서버에 로그인한 후, SQL 쿼리 섹션에서 다음 쿼리를 실행하시면 됩니다.

  1. 사용자의 인증 방식을 변경하는 쿼리입니다.

    ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '여기에_비밀번호를_입력하세요';
    

    여기서, root는 사용자 이름이고, localhost는 데이터베이스 URL, ‘여기에_비밀번호를_입력하세요’는 사용자의 비밀번호로 바꿔주세요.

  2. 변경 사항을 적용하기 위해 권한을 새로고침하는 쿼리입니다.

    FLUSH PRIVILEGES;
    

이 과정을 거친 후, Node.js에서 MySQL에 다시 연결해 보세요.

@'localhost' 부분 없이 시도하는 것은 해당 사용자가 모든 호스트에서 접속할 수 있도록 설정하기 위함입니다. 특정 호스트가 아닌 모든 호스트에서 접속할 수 있는 사용자로 변경하려면, localhost 대신 %를 사용하면 됩니다. 예를 들면, ALTER USER 'root'@'%' IDENTIFIED...와 같이 사용할 수 있습니다.

단, 이 방식을 사용할 때는 보안 문제를 고려해야 합니다. %는 모든 호스트에서의 접근을 허용하므로, 더 넓은 범위의 접속을 허용하는 것이므로 보안상 주의가 필요합니다.

영준님의 프로필 이미지
영준
질문자

캡처2.PNG

 

말씀대로 적용을 해보았습니다

flush는 적용이 되지

ALTER의 경우 오류가 나는데 제가 잘못적용한 것인가요?

영준님의 프로필 이미지
영준

작성한 질문수

질문하기