mysql을 설치한 환경은 다음과 같다
GCP(Google Cloud Platform, 구글 클라우드 플랫폼)에서 VM 인스턴스를 생성했고, 부팅디스크로 ubuntu(우분투)를 선택하여 설치했다
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:
지정한 사용자가 모든 데이터베이스의 모든 테이블에 접근하도록 권한을 주고 싶었다
GRANT ALL PRIVILEGES ON *.* TO 'username'@'host';
*.* 를 이용해 권한을 주었는데 연동 오류가 발생했다
신기한 것은 workbench에서는 디비 접속이 잘 되었다
(그래서 포트가 잘 열려있는지 확인하고, 중지했다 다시 실행시키기도 해보고, 인스턴스를 아예 처음부터 다시 만들기도 하고, 코드도 바꾸고.. 정말 3시간 동안 무엇이 문제인지 모르겠어서 머리를 쥐어짰다...)
결론은 "*" (별, 별표, 에스테리스크, 곱셈기호, 아스키 코드 42, 유니코드 U+002A..) 이 기호로 database 이름을 지정한 것이 문제였다
GRANT [권한 유형] ON [데이터베이스 이름].[테이블 이름] TO '[사용자 이름]'@'[호스트]';
데이터베이스 이름을 지정하니 오류가 사라지고 데이터베이스 접근이 잘 되는 것을 확인할 수 있었다
