1. 문제 상황

스프링으로 개발한 웹 어플리케이션에서 datasource에 아이디와 비밀번호를 입력하고 mysql 연결 시 거부가되는 현상이 있어서 이를 해결하고 포스팅합니다.

 

문제는 mysql에 host와 user가 제대로 등록이 되지 않았기 때문이었습니다. 이 글에서 사용하는 유저 아이디는 root로 하겠습니다.

2. mysql 유저 정보 수정

2.1 mysql 에 root 계정으로 접속합니다.

mysql -uroot -p

2.2 mysql 데이터 베이스를 선택합니다. 먼저 데이터베이스 목록을 조회해보고 리스트에 mysql이 있는 것을 확인 할 수 있습니다.

show databases;
use mysql;

2.3 유저 목록 조회

select host, user from user;

저의 경우에는 이미 값을 추가했기 때문에 host에 '%'라고 되있는 root계정을 볼 수 있습니다. '%'로 지정한다는 것은 어느 ip에서 요청해도 유저아이디와 비밀번호만 맞으면 접속을 허용하겠다는 것입니다.

2.4 유저 생성

CREATE USER 'root'@'%' IDENTIFIED BY '비밀번호입력';

2.5 유저 권한 부여

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%';

2.6 권한 부여 적용

FLUSH PRIVILEGES;

3. 스프링 MVC 에러

스프링부트에서는 접속이 잘됐는데 스프링MVC에서는 접속이 되지 않는 문제가 있었습니다. 에러메시지는 다음과 같습니다.

위에서 했던거와 마찬가지로 root 계정으로 mysql 데이터베이스를 'use mysql' 명령어를 통해 선택합니다. 그리고 나서 계정의 native password를 변경해줍니다.

 alter user '계정입력'@'localhost' identified with mysql_native_password by '비밀번호입력';

마찬가지로 적용을 해줍니다.

flush privileges

하지만 그후에도 새로운 에러가 나타났습니다.

Could not get JDBC Connection; nested exception is java.sql.SQLException: Unknown system variable 'query_cache_size'

pom.xml에서 mysql 버전이 맞지 않아서 발생했습니다. pom.xml의 mysql 버전을 변경해줍니다.

<dependency> 
	<groupId>mysql</groupId> 
    <artifactId>mysql-connector-java</artifactId> 
    <version>8.0.11</version> 
</dependency>

REFERENCE

https://yzink.tistory.com/entry/ERROR-MySQL-authentication-plugin-cachingsha2passwordquerycachesize

 

[ERROR] MySQL authentication plugin 'caching_sha2_password'/'query_cache_size'

스프링에서 자꾸 이러한 에러가 난다. Could not get JDBC Connection; nested exception is java.sql.SQLException: Unable to load authentication plugin 'caching_sha2_password'. 이것저것 해보고 MySQL을..

yzink.tistory.com

https://idchowto.com/?p=11068

 

idchowto.com - 스마일서브(Cloudv.kr)

IDC구축,운영,보안등 모든 지식을 공유합니다

idchowto.com

 

  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기