Springboot에서 MySQL 연동 에러

Sadie·2024년 6월 30일

Error

목록 보기
1/3

mysql을 설치한 환경은 다음과 같다
GCP(Google Cloud Platform, 구글 클라우드 플랫폼)에서 VM 인스턴스를 생성했고, 부팅디스크로 ubuntu(우분투)를 선택하여 설치했다


1. Public Key Retrieval is not allowed

yml 파일의 database url에

useSSL=false&allowPublicKeyRetrieval=true

을 추가한다

spring:
  datasource:
    url: jdbc:mysql://[[public ip]]:3306/[[database name]]?useSSL=false&allowPublicKeyRetrieval=true
    driver-class-name: com.mysql.cj.jdbc.Driver
    username: 
    password: 

2. 권한이 문제일 수도 있다

지정한 사용자가 모든 데이터베이스의 모든 테이블에 접근하도록 권한을 주고 싶었다

GRANT ALL PRIVILEGES ON *.* TO 'username'@'host';

*.* 를 이용해 권한을 주었는데 연동 오류가 발생했다
신기한 것은 workbench에서는 디비 접속이 잘 되었다
(그래서 포트가 잘 열려있는지 확인하고, 중지했다 다시 실행시키기도 해보고, 인스턴스를 아예 처음부터 다시 만들기도 하고, 코드도 바꾸고.. 정말 3시간 동안 무엇이 문제인지 모르겠어서 머리를 쥐어짰다...)
결론은 "*" (별, 별표, 에스테리스크, 곱셈기호, 아스키 코드 42, 유니코드 U+002A..) 이 기호로 database 이름을 지정한 것이 문제였다

GRANT [권한 유형] ON [데이터베이스 이름].[테이블 이름] TO '[사용자 이름]'@'[호스트]';

데이터베이스 이름을 지정하니 오류가 사라지고 데이터베이스 접근이 잘 되는 것을 확인할 수 있었다

0개의 댓글