MySQL 8.0 이 지나 간 구덩이 에 대해 자세히 알 아 보기

4200 단어 MySQL8.0구덩이.
오늘 은 MySQL 8.0 이 업데이트 되 었 습 니 다.
첫 번 째 질문:Navicat 가 데이터베이스 에 연결 되 지 않 습 니 다.
설 치 된 my sql 은 localhost:3306 입 니 다.모든 기본 값 을 설정 합 니 다.설치 후 Navicat 12 새 연결 을 열 면 오류 가 발생 합 니 다.
authentication plugin 'caching_sha2_password'
 
인증 플러그 인 을 불 러 올 수 없습니다.
공식 문 서 를 찾 아 봤 습 니 다.
원래 MySQL 8.0 에서 cachingsha2_password 가 my sql 을 대체 하 였 습 니 다.native_password 는 기본 인증 플러그 인 이 되 었 습 니 다.공식 적 으로 제 시 된 해결 방안 은 다음 과 같 습 니 다.
1.서버 를 다시 설정 하여 이전 기본 인증 플러그 인(my sqlnative_password)。

[mysqld]
default_authentication_plugin=mysql_native_password
이 설정 은 8.0 이전 클 라 이언 트 가 8.0 서버 에 연결 할 수 있 도록 합 니 다.그러나 이 설정 은 장기 적 이거 나 영구적 인 해결 방안 이 아 닌 임시 설정 으로 간주 되 어야 합 니 다.유효한 설정 으로 만 든 새 계 정 이 제공 하 는 개 선 된 인증 보안 caching 을 포기 할 수 있 기 때 문 입 니 다.sha2_password。
2.루트 관리 계 정의 인증 방식 을 my sql 로 변경 합 니 다.native_password。
새 MySQL 8.0 설치 에 대해 서 는 데이터 디 렉 터 리 를 초기 화 할 때 계 정'root'@'localhost'를 만 들 고 이 계 정 은 기본적으로 caching 을 사용 합 니 다.sha2_password。서버 루트 에 연결 하고 ALTER USER 를 사용 하면 다음 과 같이 계 정 인증 플러그 인과 비밀 번 호 를 변경 할 수 있 습 니 다.

ALTER USER 'root'@'localhost'
 IDENTIFIED WITH mysql_native_password
 BY 'password';
이로써 MySQL 8.0 의 기본 인증 변경 문 제 를 해결 했다.
두 번 째 질문:Caused by:java.sql.SQLexception:Unknown initial character set index'255'...
데이터 베 이 스 를 업데이트 한 후에 로 컬 에서 자바 프로젝트 를 시 작 했 습 니 다.데이터 베 이 스 를 연결 하여 테스트 프로그램 에서 직접 이상 을 던 졌 습 니 다.공식 문 서 를 찾 아 보 았 습 니 다6.5.1.3 Caching SHA-2 Pluggable Authentication원래 8.0.1 버 전 으로 유 니 코드 문자 집합 지원 에서 몇 가지 중요 한 변경 을 했 습 니 다.기본 문자 집합 은 latin 1 에서 utf8mb 4 로 변경 되 었 습 니 다.이 시스템 은 기본 collationserver 와 collocationdatabase 시스템 변 수 는 latin 1swedish_ci utf8mb 40900_ai_ci。
해결 방법:이 모든 변경 사항 은 새 버 전의 MySQL 커 넥 터 자바 에서 처리 되 었 습 니 다.MySQL 을 설정 할 필요 가 없습니다.그래서 MYSQL 버 전 만 업그레이드 하면 되 고 5.1.6 을 5.1.44 로 변경 하면 문제 가 완벽 하 게 해결 된다.

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.44</version>
  </dependency> 
문제 3 설치 완료 후 데이터베이스 show databases 에 들 어 갑 니 다.권한 변경 시도 오류
ERROR 1449 (HY000): The user specified as a definer ( Changes in MySQL 8.0.1 (2017-04-10, Development Milestone) ) does not exist
Table 'mysql.role_edges' doesn't exist
해결 방법

mysql_upgrade -u root -p;
문제 4:클 라 이언 트 가 데이터 베 이 스 를 성공 적 으로 연결 한 후에 프로젝트 의 Pdo 연결 my sql 이 또 잘못 되 었 습 니 다.
Next PDOException: SQLSTATE[HY000] [2054] The server requested authentication method unknown to the client [caching_sha2_password] in /vendor/yiisoft/yii2/db/Connection.php:687
이 오 류 는 my sql 에서 기본적으로 caching 을 사용 할 수 있 습 니 다.sha2_password 는 my sql 이 아 닌 기본 인증 플러그 인 입 니 다.native_password,하지만 클 라 이언 트 는 이 플러그 인 으로 인 한 것 을 잠시 지원 하지 않 습 니 다.공식 문서 설명
In MySQL 8.0, caching_sha2_password is the default authentication plugin rather than mysql_native_password. For information about the implications of this change for server operation and compatibility of the server with clients and connectors, see caching_sha2_password as the Preferred Authentication Plugin.
MySQL 8.0 에서 cachingsha2_password 는 my sql 이 아 닌 기본 인증 플러그 인 입 니 다.native_password。이 변경 사항 이 서버 작업 에 미 치 는 영향 및 서버 와 클 라 이언 트,커 넥 터 의 호환성 에 대한 정 보 는 caching 을 참조 하 십시오.sha2_password 는 인증 플러그 인 을 우선 선택 합 니 다.
해결 방법
my.cnf 파일 을 편집 하고 기본 인증 플러그 인 을 변경 합 니 다.

$ vi /etc/my.cnf
[my sqld]에 아래 코드 추가

default_authentication_plugin=mysql_native_password
그리고 mysql 다시 시작

$ service mysqld restart
사이트 가 마침내 정상적으로 열 렸 다.

이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기