티스토리 뷰
MySql : MySql 8.0이상 caching_sha2_password authentication plugin 문제해결
Korean Eagle 2020. 5. 18. 02:53아래 링크는 개인 홈페이지에 각 쇼핑몰 판매량를 트레킹해서 만든 저렴한 딜 정보 모음페이지이다. 뽐뿌 같은 핫딜 사이트 가기 번거로워서 만들었는데, 고물과 시대에 아무 생각없이 사용하기 좋은 것 같다. 실시간 기반이고 go와 headless 베이스라 속도가 빠르다.
7~8일 정도 걸려서 만든 거라 나름 신경 썼다. 한번 들어가 보고 판단하길
1. MySql 8.0은 SHA-256 hashing을 구현하는 두 가지 인증 플러그인을 지원한다.
1-1 sha256_password - 기본적인 SHA-256 인증을 구현한 플러그인
1-2 caching_sha2_password - sha256_password와 동일한데 성능 향샹을 위해 서버 캐싱을 이용한다.
1-3 MySql 8.0의 기본 인증 플러그인은 예전의 mysql_native_password가 아니라 caching_sha2_password이다.
1-4 문제는 caching_sha2_password를 사용하려면
1-4-1 SSL 보안연결을 사용할거나
1-4-2 RSA 보안을 적용한 비암호 연결을 사용해야 한다.
1-4-3 위의 두가지 경우 caching_sha2_password 는 MySql의 보안모듈을 사용한다.
2. 따라서 보안 연결이나 RSA 보안을 사용하지 않으면 아래와 같은 에러가 발생한다.
Authentication plugin 'caching_sha2_password' cannot be loaded:
dlopen(/usr/local/mysql/lib/plugin/caching_sha2_password.so, 2): image not found
3. 이 문제를 가장 쉽게 해결하는 방법은 그냥 구식 mysql_native_password를 사용하는 것이다.
3-1 사용자의 암호를 아래의 DDL을 통해 구식 방식으로 변경할 수 있다.
ALTER USER 'yourusername'@'localhost' IDENTIFIED WITH mysql_native_password BY 'youpassword';
3-2 두번 째는 my.ini파일에 아래처럼 설정하고 사용하면 된다. 당연히 재기동 후에 생성된 User만 적용된다.
[mysqld]
default_authentication_plugin=mysql_native_password
4. 다른 방법은 그냥 아래처럼 SSL을 사용하지 않고 RSA도 사용하지 않게 명시하는 방법이다.
4-1 이 경우 보안에 취약할 수 밖에 없다.
jdbc.url=jdbc:mysql://localhost:3306/spring_security?allowPublicKeyRetrieval=true&useSSL=false&serverTimezone=Asia/Seoul
5. 에러가 안나서 Authentication Type을 caching_sha2_password, standard 둘 다 테스트 하는데
5-1 url 설정과 상관없이 다 돌아간다. ㅋㅋㅋ 뭐가 문제인지 왜 다 되는지 나도 모르겠다. 아무튼 돌아가면 된다.
5-2 위의 방법 중 하나는 돌아가니 그걸로 된 거다.
'Side Technologies' 카테고리의 다른 글
Maven : 기본적으로 하는 일 (0) | 2020.07.20 |
---|---|
MySql : 테이블 이름 바꾸기, 테이블의 Primary Key 지정 삭제하기, 컬럼 위치 변경하기, 테이블 auto_increment 초기화 (0) | 2020.05.18 |
MySql : UTF-8 설정 (0) | 2020.05.12 |
MySql : User 생성하기, 테이블 변경하기 (0) | 2020.05.01 |
MySql : Auto increment 숫자 세팅 (0) | 2020.05.01 |
- Total
- Today
- Yesterday
- 도커 개발환경 참고
- AWS ARN 구조
- Immuability에 관한 설명
- 자바스크립트 멀티 비동기 함수 호출 참고
- WSDL 참고
- SOAP 컨슈머 참고
- MySql dump 사용법
- AWS Lambda with Addon
- NFC 드라이버 linux 설치
- electron IPC
- mifare classic 강의
- go module 관련 상세한 정보
- C 메모리 찍어보기
- C++ Addon 마이그레이션
- JAX WS Header 관련 stackoverflow
- SOAP Custom Header 설정 참고
- SOAP Custom Header
- SOAP BindingProvider
- dispatcher 사용하여 설정
- vagrant kvm으로 사용하기
- git fork, pull request to the …
- vagrant libvirt bridge network
- python, js의 async, await의 차이
- go JSON struct 생성
- Netflix Kinesis 활용 분석
- docker credential problem
- private subnet에서 outbound IP 확…
- 안드로이드 coroutine
- kotlin with, apply, also 등
- 안드로이드 초기로딩이 안되는 경우
- navigation 데이터 보내기
- 레이스 컨디션 navController
- raylib
- 매핑
- crud
- jsp
- spring boot
- form
- Security
- 하이버네이트
- 스프링부트
- mapping
- RestTemplate
- Validation
- MYSQL
- Angular
- login
- Spring
- 스프링
- 상속
- Rest
- XML
- Spring Security
- Many-To-Many
- 자바
- 로그인
- one-to-many
- WebMvc
- 외부파일
- one-to-one
- 설정
- hibernate
- 설정하기