SQLyog가 MySQL8.0+에 연결할 때 오류 해결: 오류 번호 2058

이 문서에서는 SQLyog가 MySQL8.0+에 연결할 때 오류 번호 2058을 해결하는 방법을 요약합니다.

1. 문제 현상

SQLyog를 사용하여 MySQL8.0+ 데이터베이스에 연결할 때 오류가 보고됩니다.
错误号码2058 Plugin caching_sha2_password could not be loaded

오류 번호 2058

2. 원인분석

caching_sha2_password이 문제는 MySQL이 버전 8.0부터 인증 플러그인을 추가했기 때문에 발생하며, 이 플러그인은 새 사용자를 생성할 때 기본적으로 암호화에 사용되며, 사용 중인 SQLyog 버전은 이 암호화 방법으로 암호화된 비밀번호를 인식할 수 없습니다 .
(대부분의 경우 SQLyog 버전이 오래되었습니다. 새로운 SQLyog는 이미 caching_sha2_password암호화 방법에 대한 비밀번호 인식을 지원합니다.)

MySQL :: MySQL 8.0 참조 매뉴얼 :: 5.1.8 서버 시스템 변수

mysql 인증 플러그인

3. 솔루션

1. 해결 방법 1: SQLyog 버전 업데이트

SQLyog 설치 경로에 동적 라이브러리가 있는지 확인하세요 . 그렇지 않다면 SQLyog 버전이 암호화된 사용자를 통한 데이터베이스 연결을 caching_sha2_password.dll지원하지 않는다는 의미입니다 .caching_sha2_password

여기에 이미지 설명을 삽입하세요.

SQLyog 출시 내역 확인: 버전 기록 - 2019 - SQLyog 지식 베이스(webyog.com)
처음 부터 인증 플러그인이 SQLyog 13.1.3지원되었습니다.caching_sha2_password

SQLyog를 업데이트해야 하는 경우 각 SQLyog 버전을 다운로드하여 설치 해야 할 수 있습니다.

2. 옵션 2: 사용자 인증 플러그인 수정

테이블 권한이 있는 사용자를 사용하여 mysql.usermysql에 연결하고 다음 명령을 실행합니다.

mysql> ALTER USER 'sqlyog'@'localhost' IDENTIFIED WITH mysql_native_password BY '1234qwer';
Query OK, 0 rows affected (0.03 sec)

mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.03 sec)

mysql> SELECT user,host,plugin FROM mysql.user;
+------------------+-----------+-----------------------+
| user             | host      | plugin                |
+------------------+-----------+-----------------------+
| mysql.infoschema | localhost | caching_sha2_password |
| mysql.session    | localhost | caching_sha2_password |
| mysql.sys        | localhost | caching_sha2_password |
| root             | localhost | caching_sha2_password |
| sqlyog           | localhost | mysql_native_password |
+------------------+-----------+-----------------------+
5 rows in set (0.00 sec)

설명: 권한 부여 플러그인을
ALTER USER 'sqlyog'@'localhost' IDENTIFIED WITH mysql_native_password BY '1234qwer'사용하여 사용자 비밀번호를 업데이트하고 이를 자신의 사용자 및 호스트로 바꾸십시오.mysql_native_password sqlyog@localhost

3. 해결 방법 3: my.cnf 또는 my.ini 구성 파일 복구

구성 파일을 찾습니다(mysql이 Windows에 설치된 경우).

C:\Users\Administrator>mysql --help | findstr "my.ini"
C:\WINDOWS\my.ini C:\WINDOWS\my.cnf C:\my.ini C:\my.cnf D:\Chen\MySoft\mysql-8.1.0-winx64\my.ini D:\Chen\MySoft\mysql-8.1.0-winx64\my.cnf

구성 파일을 찾습니다(mysql이 Linux 또는 docker에 설치된 경우).

sh-4.4# mysql --help | grep 'my.cnf'
                      order of preference, my.cnf, $MYSQL_TCP_PORT,
/etc/my.cnf /etc/mysql/my.cnf /usr/etc/my.cnf ~/.my.cnf

구성 파일을 순서대로 찾아 구성 파일을 찾은 후 열고 구성 파일 아래에 다음 구성을 추가합니다 [mysqld].

default-authentication-plugin=mysql_native_password

인증 플러그인 수정

그런 다음 mysql 서비스를 다시 시작하고
Windows에서 서비스를 다시 시작합니다.

net stop mysql
net start mysql

Linux에서 서비스 다시 시작

systemctl stop mysqld
systemctl start mysqld

Docker에서 mysql 컨테이너 다시 시작

docker restart mysql81

mysql81mysql 컨테이너 이름 또는 ID로 바꾸십시오.

재시작이 완료되면 MySQL 서비스에서 사용하는 기본 암호화 인증 플러그인을 사용할 수 있게 되며, mysql_native_password새로 생성된 사용자가 인증 플러그인을 지정하지 않으면 생성 후 기본 플러그인이 암호화에 사용됩니다.

mysql> show variables like 'default_authentication_plugin';
+-------------------------------+-----------------------+
| Variable_name                 | Value                 |
+-------------------------------+-----------------------+
| default_authentication_plugin | mysql_native_password |
+-------------------------------+-----------------------+
1 row in set (0.01 sec)

mysql> CREATE USER 'sqlyog'@'%' IDENTIFIED BY '1234qwer';
Query OK, 0 rows affected (0.04 sec)

mysql> GRANT ALL PRIVILEGES ON *.* TO 'sqlyog'@'%';
Query OK, 0 rows affected (0.02 sec)

mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.01 sec)

mysql> SELECT user,host,plugin FROM mysql.user;
+------------------+-----------+-----------------------+
| user             | host      | plugin                |
+------------------+-----------+-----------------------+
| root             | %         | caching_sha2_password |
| sqlyog           | %         | mysql_native_password |
| mysql.infoschema | localhost | caching_sha2_password |
| mysql.session    | localhost | caching_sha2_password |
| mysql.sys        | localhost | caching_sha2_password |
| root             | localhost | caching_sha2_password |
+------------------+-----------+-----------------------+
6 rows in set (0.00 sec)

이때 새로 생성된 사용자를 이용하여 mysql8.0+ 데이터베이스에 접속할 수 있습니다.

여기에 이미지 설명을 삽입하세요.
참고: 기존 사용자의 경우 caching_sha2_password암호화 방법을 계속 사용하면 여전히 SQLyog에 연결할 수 없습니다. 옵션 2를 사용하여 암호화 방법과 비밀번호를 재설정할 수 있습니다.

4. 최종 요약

  1. 엄밀히 말하면 方案3위와 方案2동일합니다(옵션 3은 권장되지 않음).
    方案3서버의 기본 인증 플러그인만 변경하며 mysql_native_password, 새로 생성된 사용자에게만 영향을 미치며(사용자 생성 시 인증 플러그인이 지정되지 않은 경우) 기존 사용자의 암호화 방법에는 영향을 미치지 않습니다. 方案2기존 사용자를 사용하여 mysql에 연결하려면 해당 사용자의 인증 플러그인과 비밀번호를 재설정 해야 합니다 .
  2. 方案1SQLyog 업데이트 솔루션은 여전히 ​​시도해 볼 가치가 있으며, 결국 이는 단 한번의 솔루션입니다. 업데이트 후에 SQLyog 13.1.3+는 연결하는 사용자가 어떤 승인된 플러그인을 사용하더라도 연결할 수 있습니다.

Guess you like

Origin blog.csdn.net/B11050729/article/details/132845051