[데이터베이스 학습] - 수정: mysql 인증 플러그인 'caching_sha2_password'가 지원되지 않습니다.

목차

1. 환경 소개

2. 문제 설명

3. 원인분석

4. 솔루션

1) 방법 1: mysql_native_password 확인 방법으로 직접 변경

2) 옵션 2: sql 명령을 사용하여 확인 메커니즘 수정

① 명령줄 창을 엽니다——cmd

② mysql 데이터베이스에 로그인

③ 다른 사용자 이름의 인증 방법을 확인하고 mysql.user에서 사용자, 플러그인을 선택합니다.

 ④ caching_sha2_password를 mysql_native_password 확인 방법으로 변경

⑤ ALTER USER 'root'@'localhost'는 'root'에 의해 mysql_native_password로 식별됩니다.

3) 옵션 3: mysql 버전을 8.0 이하로 직접 낮추기


1. 환경 소개

윈도우

파이썬3.9

MySQL8.0.29

2. 문제 설명

이 문제는 Python을 사용하여 데이터 풀을 생성할 때 발생합니다.

코드는 다음과 같습니다

import mysql.connector.pooling
 
# 定义连接需要的参数,用字典封存,私有参数
__config = {
	"host":"localhost",
	"port":3306,
	"user":"root",
	"password":"root",
	"database":"studentTable"
}

# 创建连接池,定义最大连接数
try:
	pool = mysql.connector.pooling.MySQLConnectionPool(
		**__config,
		pool_size=10
	)
except Exception as e:
	print("创建连接池出现异常:",e)

 

3. 원인분석

 클라이언트를 이용하여 mysql 데이터베이스에 접속하는데, 데이터베이스 버전이 8.0보다 높을 경우 위와 같은 문제가 발생할 수 있는데, 8.0 이전에는 mysql_native_password 인증 메커니즘을 기본으로 사용하였고, 8.0 이후에는 caching_sha2_password 방식을 기본으로 사용하였기 때문이다. 따라서 mysql_native_password 인증 메커니즘으로 변경해야 합니다.

4. 솔루션

1) 방법 1: mysql_native_password 확인 방법으로 직접 변경

[데이터베이스 버그 수정]——인증 플러그인 'caching_sha2_password'가 지원되지 않습니다_Sentimental Mechanical Man's Blog-CSDN Blog Catalog 데이터베이스에 연결할 때 발생하는 문제 데이터베이스 연결 풀 생성 시 발생하는 문제 해결 방법 클라이언트 링크를 사용하는 이유 Mysql 데이터베이스, 데이터베이스 버전이 8.0 이상인 경우 위와 같은 문제가 발생할 수 있는데, 8.0 이전에는 기본적으로 mysql_native_password 인증 메커니즘을 사용했기 때문입니다.8.0 이후에는 caching_sha2_password를 사용하여 데이터베이스에 연결하면 이 문제가 해결됩니다. conn = mysql.connector .connect(호스트 = "localhost", 사용자 = "루트", pas https://blog.csdn.net/qq_45769063/article/details/121986314

검증 메커니즘을 수정하려면 매개변수 설정 뒤에 이 줄을 추가하세요.  

 "auth_plugin": 'mysql_native_password'

import mysql.connector.pooling
 
# 定义连接需要的参数,用字典封存,私有参数
__config = {
	"host":"localhost",
	"port":3306,
	"user":"root",
	"password":"root",
	"database":"studentTable",
	"auth_plugin": 'mysql_native_password'
}

# 创建连接池,定义最大连接数
try:
	pool = mysql.connector.pooling.MySQLConnectionPool(
		**__config,
		pool_size=10
	)
except Exception as e:
	print("创建连接池出现异常:",e)

참고: 이 솔루션은 이전에도 가능했지만 이번에는 해결되지 않았기 때문에 두 번째 솔루션을 생각해냈습니다.

2) 옵션 2: sql 명령을 사용하여 확인 메커니즘 수정

mysql 오류: 이 인증 플러그인은 지원되지 않습니다_A Dongge의 블로그 - CSDN 블로그 이 인증 플러그인은 지원되지 않습니다. 애플리케이션이 mysql docker에 연결되고 계속 오류를 보고합니다. 이 인증 플러그인은 지원되지 않습니다. Google은 mysql의 새 버전(8.0 이상)이 루트 사용자가 사용하는 플러그인을 caching_sha2_password로 업데이트한 것으로 나타났습니다. mysql에 로그인하고 다음 명령을 입력하여 확인하세요... https://blog.csdn.net/c359719435/article/details/80432508 [오류수정]——mysql 인증 플러그인 'caching_sha2_password'가 지원되지 않는 문제 처리_센티멘탈 메카맨 블로그 - CSDN 블로그 mysql 인증 플러그인 'caching_sha2_password'가 지원되지 않습니다. mysql8.0 버전을 사용하는 문제 처리, 로그인 실패, 인증 플러그인 'caching_sha2_password' 프롬프트가 지원되지 않습니다. 그 이유는 MySQL 8.0 이후에는 기본 비밀번호 암호화 방식이 mysql_native_password가 아닌 caching_sha2_password이기 때문입니다. 해결 방법: 1. mysql 데이터베이스 mys https://blog.csdn.net/qq_45769063/article/details/122322667 에 로그인합니다.

① 명령줄 창을 엽니다——cmd

② mysql 데이터베이스에 로그인

mysql -uroot -p

 

③ 다른 사용자 이름의 인증 방법을 확인하고 mysql.user에서 사용자, 플러그인을 선택합니다.

select user,plugin from mysql.user;

데이터베이스에는 5개의 사용자 이름(user)이 있는 것을 볼 수 있습니다. 데이터 풀을 생성할 때 루트 사용자 이름을 사용했기 때문에 루트 사용자 이름의 인증 방법(플러그인)을 살펴보겠습니다 . 루트에는 두 개의 사용자 이름이 있습니다. , 확인 방법 중 하나가 caching_sha2_password이므로 수정이 필요합니다.

 

 ④ caching_sha2_password를 mysql_native_password 확인 방법으로 변경

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'root';

 

그런 다음 mysql.user에서 select user,plugin을 실행하여 서로 다른 사용자 이름의 인증 방법을 확인하면 아래 그림과 같이 두 루트 사용자 이름의 인증 방법이 mysql_native_password로 수정된 것을 확인할 수 있습니다.

 

⑤ ALTER USER 'root'@'localhost'는 'root'에 의해 mysql_native_password로 식별됩니다.

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'root';

이 코드 줄에는 두 가지 의미가 있습니다. 첫째, 루트 비밀번호를 'root'로 변경하고 이전 비밀번호를 버립니다. 둘째: mysql_native_password를 사용하여 새 비밀번호를 인코딩합니다.

참고: 이 방법으로 문제가 해결되었습니다. 

3) 옵션 3: mysql 버전을 8.0 이하로 직접 낮추기

Supongo que te gusta

Origin blog.csdn.net/qq_45769063/article/details/125024945
Recomendado
Clasificación