-
23-07-28 ts DB 연결 에러일차 TIL 2023. 7. 31. 09:08
문제
에러코드
Error: ER_NOT_SUPPORTED_AUTH_MODE: Client does not support authentication protocol requested by server; consider upgrading MySQL client
이 문제는 클라이언트 프로그램에서 mysql 패스워드 플러그인 "caching_sha_pqssword"를 처리하지 못하여 생기는 오류
글라이언트 프로그램에서 사용할 수 있도록 유저의 페스워드를 Plusin으로 바꿔주면 해결 된다.
해결
1.cmd 접속 후 mysql -u 유저아이디 -p 로 mysql 접속
2.
mysql> ALTER USER 'User'@'Host' IDENTIFIED WITH mysql_native_password BY 'password';으로 바꿔줌
3.
mysql> SELECT Host,User,plugin,authentication_string FROM mysql.user;으로 바뀌었는지 확인.
문제2
이 방법을 썼는데도 여전히 에러가 발생함
고민
비밀번호 정책을 바꿔도 그대로인 것을 보고 혹시 비밀번호 자체를 받아오지 못하는 것이가를 생각했다.
.env를 사용하는데 ts를 이제 공부하기 시작하여 typeorm을 사용하는 과정에서 문제가 생긴 것이 아닌가 생각되었다.
import { Injectable } from '@nestjs/common';import { TypeOrmModuleOptions, TypeOrmOptionsFactory } from '@nestjs/typeorm';import { ConfigService } from '@nestjs/config/dist';import { User } from 'src/user/user.entity';
@Injectable()export class TypeOrmConfigService implements TypeOrmOptionsFactory {constructor(private readonly configService: ConfigService) {}createTypeOrmOptions(): TypeOrmModuleOptions {return {type: 'mysql',host: this.configService.get<string>('DATABASE_HOST'),port: this.configService.get<number>('DATABASE_PORT'),username: this.configService.get<string>('DATABASE_USERNAME'),password: this.configService.get<string>('DATABASE_PASSWORD'),database: this.configService.get<string>('DATABASE_DATABASE'),entities: [User],synchronize: true,};}}DATABASE_USERNAME=rootDATABASE_PASSWORD=passwordDATABASE_HOST=127.0.0.1DATABASE_DATABASE=DBDATABASE_PORT=3306위 코드를 보면 ' '를 사용하지 않고 지금까지 env를 사용지만
이번엔 받는 값을 string으로 받는 것인데 이것이 문제인 듯 했다.
해결
DATABASE_USERNAME='root'DATABASE_PASSWORD='password'DATABASE_HOST='127.0.0.1'DATABASE_DATABASE='DB'DATABASE_PORT=3306이렇게 문자열로 바꾸니 인식이 되었다.
값 자체가 맞치 않다는 에러였다면 좀더 빠르게 오류를 찾고 해결했을텐데
오류 자체는 비밀번호 정책오류가 나왔기에 오류를 찾고 고치는데 생각보다 힘들었다.
'일차 TIL' 카테고리의 다른 글
23-08-09 TIL (0) 2023.08.10 23-07-31 TIL DTO(Data Transfet Object) (0) 2023.08.01 23-07-14 TIL (0) 2023.07.16 23-07-13 TIL (0) 2023.07.16 23-07-12 TIL, Error: Route.post() requires a callback function but got a [object Undefined] (0) 2023.07.13