인증 플러그인 'caching_sha2_password'를로드 할 수 없습니다


435

MySQL-8.0을 MySQL Workbench와 연결하고 아래 오류가 발생합니다.

인증 플러그인 'caching_sha2_password'를로드 할 수 없습니다 : dlopen (/usr/local/mysql/lib/plugin/caching_sha2_password.so, 2) : 이미지를 찾을 수 없습니다

다른 클라이언트 도구를 사용해 보았습니다.

이것에 대한 해결책?


2
mysql_native_password 모드에서 실행되도록 MySQL 8.0을 구성하면이 문제를 해결할 수 있습니다.
Raymond Nijland

6
맞습니다. MySQL Workbench는 캐시 된 sha2 암호를 사용할 수 있도록 커넥터 업데이트가 필요합니다 (곧 제공 예정).
Mike Lischke

7
기본 로그인을 기본 로그인으로 설정하고 다시 시작했는데 문제가 지속되며 로그인하여 새 사용자를 만들 수 없습니다. 놀랍게도 2018 년에 Mysql과 Workbench를 설치하면 상자가 부족하지 않습니다. 대충 품질 관리.
ChrisR

1
더 이상 32 비트 mysql 클라이언트 라이브러리가 없다는 인상을 받았는지 모르겠지만 사실은 아닙니다. 사실 MySQL Workbench에는 더 이상 32 비트 버전이 제공되지 않습니다.
Mike Lischke

2
약한 암호화 사용을 제안하는 대답은 올바른 방법이 아닙니다. tableplus 와 같은 다른 클라이언트를 사용하십시오 .
ohkts11

답변:


279

참고 : MAC OS의 경우

  1. 시스템 환경 설정> 데이터베이스 초기화>에서 MySQL을 엽니 다.
  2. 새 비밀번호를 입력하십시오.
  3. '레거시 비밀번호 사용'을 선택하십시오.
  4. 서버를 다시 시작하십시오.
  5. 이제 MySQL Workbench를 연결하십시오

이미지 설명


이것은 OSX
Salam

2
고마워요 MySQL Workbench는 레거시 비밀번호 암호화를 사용하여 DB 서버에 연결하기 때문에 작동한다고 생각합니다. 권장되는 강력한 암호 암호화 대신 MySQL을 설치하고 레거시 암호화를 선택하는 동안 수행 할 수도 있습니다.
monkSinha

1
일부 버전의 MySQL은 설정 패널이 다르며 작동하지 않습니다.
Michael Yang

8
오래되고 덜 안전한 인증으로 돌아가는 광고는 전혀 좋은 해결책 이 아닙니다 .
Mike Lischke

63
시스템 환경 설정에 MySQL이 없습니다
JavaRunner

247

이와 같이 비밀번호의 암호화를 변경할 수 있습니다.

ALTER USER 'yourusername'@'localhost' IDENTIFIED WITH mysql_native_password BY 'youpassword';

33
OP가 새로운 최신 인증 방법을 사용하려면 어떻게해야합니까?
LibertyPaul

@twocold, 멋진 스크립트 쿼리 +1
Md Haidar Ali Khan

코드에 @twocold로 표시된 것처럼 yourusername 및 yourpassword는 작은 따옴표로 묶어야합니다.
Matrix

@twocold 위의 ALTER USER를 MySQL 8.0 표준 (새로운 암호화 수준)으로 되돌리고 어떻게 작동하지 않습니까?
Will Belden

1
@BrianFitzGerald "caching_sha2_password" 입니다. 여기 또는 여기 링크 하십시오 .
얀 카린

114

Windows 10의 경우 :

명령 프롬프트를 엽니 다 :

cd "C:\Program Files\MySQL\MySQL Server 8.0\bin"

C:\Program Files\MySQL\MySQL Server 8.0\bin> mysql -u root -p
Enter password: *********

mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'newrootpassword';
Query OK, 0 rows affected (0.10 sec)

mysql> exit

또는 다음과 같이 my.ini 구성을 변경할 수 있습니다 .

[mysqld]

default_authentication_plugin=mysql_native_password

MySQL 서버를 다시 시작하고 Workbench를 다시여십시오.


1
my.ini를 변경하면 작동하지 않지만 명령 프롬프트가 변경되었습니다.
amelvin

my.ini를 변경하면 내 문제가 해결됩니다. 감사.
버 칸트


연결하려는 서버에서 구성을 수행해야하며 ALTER USER가 Windows에서 원격 mysql 서버로 연결하도록 작업했습니다.
Alcides


76

아래의 Alter 명령으로 사용자를 변경하여 사용자 비밀번호의 암호화를 변경할 수 있습니다.

ALTER USER 'username'@ 'ip_address'mysql_native_password로 식별 됨 'password';

또는

이전 비밀번호 플러그인과 함께 작동하면이 오류를 피할 수 있습니다.

먼저 Windows의 Linux / my.ini 파일에 대한 my.cnf 파일 의 인증 플러그인을 변경하십시오 .

[mysqld]

default_authentication_plugin = mysql_native_password

변경 사항을 적용하기 위해 mysql 서버를 다시 시작하고 MySQL을 통해 mysql 클라이언트와 연결을 시도하십시오.

여전히 연결할 수없고 아래 오류가 발생하는 경우 :

Unable to load plugin 'caching_sha2_password'

사용자에게 위의 플러그인이 필요하다는 의미입니다. 따라서 기본 플러그인을 변경 한 후 create user 또는 grant 명령으로 새 사용자를 작성하십시오. 새 사용자에게는 기본 플러그인이 필요하며 MySQL을 연결할 수 있습니다.

감사


5
플러그 인이 빠진 문제의 해결책은 아닙니다.
LibertyPaul

1
그것은. 문제는 DB 관리 소프트웨어가 아직 처리하지 않는다는 것입니다. 따라서 mysql workbench dev가 아니라면 지금이 해결 방법입니다.
케빈 Gagnon

나를 위해 일했다. 감사합니다
루카스 아라 우호

구성 플래그를 추가 한 후 새 사용자를 작성하는 데있어 중요한 부분입니다.
nipponese 2016 년

70

현재 (2018/04/23) 개발 릴리스 를 다운로드해야합니다 . GA의 사람들은 작동하지 않습니다.

최신 GA 버전 (6.3.10)에 연결할 수 없습니다.

그것은 함께 일한 mysql-workbench-community-8.0.11-rc-winx64.msi(에서 https://dev.mysql.com/downloads/workbench/ 탭, 개발 자료 ).


4
실제로 정답은 다음과 같습니다. MySQL 8.0에는 MySQL Workbench 8.0이 필요합니다. 불행히도 여전히 베타 모드로 보입니다. 그러나 일단 설치되면 새로운 SHA 암호 암호화를 사용할 수 있으므로 아무것도 변경할 필요가 없습니다.
Cristi S.

베타가 아니라 출시 후보 (RC)입니다. GA (일반적으로 사용 가능) 버전이 곧 제공 될 예정입니다.
Mike Lischke

나에게 가장 좋은 아이디어.
Wojciech Fornal

2
이것은 여전히 ​​그렇습니다. GA 버전을 설치하면 권장 비밀번호 암호화를 사용하여 로그인 할 수 없습니다. GA 버전은 기존 인증으로 만 작동한다는 경고는 없습니다.
Donald Rich

2
적어도 MacOS에서 GA 버전은 현재 8.0.12 (2018/08/13)이며 문제를 해결합니다! 감사!
Bruno Silvano

63

나는 같은 문제가 있었지만 Aman Aggarwal의 대답은 mysql 8.X를 실행하는 Docker 컨테이너에서 작동하지 않았습니다. 컨테이너에 로그인했습니다

docker exec -it CONTAINER_ID bash

그런 다음 루트로 mysql에 로그인하십시오.

mysql --user=root --password

root의 비밀번호를 입력하십시오 (기본값은 'root'입니다). 마지막으로 다음을 실행하십시오.

ALTER USER 'username' IDENTIFIED WITH mysql_native_password BY 'password';

모두 준비되었습니다.


이것은 내가 찾고있는 것에 대한 좋은 대답 일 수있는 것처럼 보입니다. 그러나 나는 "이것"이 무엇인지 모른다. 허용 된 답변을 의미합니까? 또는 다른 하나
Zach Smith

1
예 @ZachSmith, "this"는 승인 된 응답자를 나타냅니다.
axelferreira

docker exec -it CONTAINER_ID mysql --user=root --password의 존재에 의존하는 두 개의 명령 대신에 ( 어떻게 bash미래에 확실하지 않은) 어떻습니까?
Eric

docker desktop 2.0.3.0 (mac)을 사용하는 sequelpro 1.1.2에서는 작동하지 않았습니다. 명령은 모두 작동하지만 로그인시 속편 프로 오류-mysql : latest (v8.0.15) 사용
arcseldon

다른 사람들이보고했듯이, mysql 5.7을 사용하면 아무 것도 필요하지 docker run -p 3306:3306 --name mysql1 -e MYSQL_ROOT_PASSWORD=secret -d mysql:5.7
않다

47

좋아, 이것에 많은 시간을 낭비 했으므로 여기에 요약이 있습니다. 2019 년 3 월 19 일 현재

MySql 8+ 와 함께 Docker 이미지를 사용하려고 시도한 후 SequelPro 를 사용하는 경우 컨테이너에서 실행되는 데이터베이스에 액세스 운이 좋지 않습니다.

참조 sequelpro 문제 2699

내 설정은 docker desktop 2.0.3.0 (mac-mojave)을 사용하는 sequelpro 1.1.2이며 mysql : latest (v8.0.15)를 사용하여 시도했습니다.

다른 사람들이보고했듯이 mysql 5.7을 사용하면 아무것도 필요하지 않습니다.

docker run -p 3306:3306 --name mysql1 -e MYSQL_ROOT_PASSWORD=secret -d mysql:5.7

물론, Docker에서 MySql 8+를 사용할 수 있으며 해당 상황에서 (필요한 경우) 여기에 제공된 caching_sha2_password유형 문제에 대한 다른 답변 이 작동합니다. 그러나 sequelpro는 MySql 8 이상을 사용하지 않습니다.

마지막으로 sequelpro (2013-2014에서 신뢰받는 친구)를 버리고 대신 DBeaver 를 설치 했습니다 . 모든 것이 즉시 작동했습니다. 도커의 경우 다음을 사용했습니다.

docker run -p 3306:3306 --name mysql1 -e MYSQL_ROOT_PASSWORD=secret -d mysql:latest --default-authentication-plugin=mysql_native_password

다음을 사용하여 mysql 데이터베이스를 빠르게 볼 수 있습니다.

docker exec -it mysql1 bash

mysql -u root -p

show databases;

1
이것을 공유해 주셔서 감사합니다. 실수로 MySQL dev 컨테이너를 삭제 한 후 똑같은 콤보를 시도했습니다.
martn_st

1
. 이미 2019 동안 속편 Pro는 적극적으로 3 년 4 월 2016 년 더 이상 :( 최신 뉴스를 개발하지 않는 아주 슬픈 내가 MySQL의 탐험가 본 적이 가장 좋은 도구이다.
Oleksii Shnyra

@OleksiiShnyra 몇 년 동안 프로덕션 릴리스가 없었지만 FYI, 최신 "야간"릴리스를 사용할 수 있습니다. sequelpro.com/test-builds 및를 통해 brew cask install homebrew/cask-versions/sequel-pro-nightly.
피터 W


MySQL 8을 사용 중이고로 다운 그레이드하지 않으려 mysql_native_password는 경우 다음을 수행 할 수 있습니다. stackoverflow.com/a/56402217/2321594
Aidin

46

" MySQL Web Installer "를 사용하여 Windows 10 PC에 MySQL을 설치 하고 MySQL Workbench를 사용하여 연결하는 동안 동일한 문제가 발생했습니다. 설치 프로그램 창에서 서버를 재구성하여 문제를 해결했습니다.

MySQL 웹 설치 프로그램-홈 화면

"재구성"옵션을 클릭하면 서버를 재구성 할 수 있습니다. "인증 방법"에 도달 할 때까지 "다음"을 클릭하십시오.

MySQL 설치 프로그램-인증 방법

이 탭에서 두 번째 옵션 인 "레거시 인증 방법 사용 (MySQL 5.x 호환성 유지)"을 사용하십시오.

다른 모든 것을 그대로 유지하면 문제가 해결됩니다.


1
수동으로 mysql-8.0.11-winx64.zip의 압축을 풀고 "caching_sha2_password를로드 할 수 없음"문제를 쉽게 해결할 수 없습니다. 그러나 mysql-installer-community-8.0.11.0.msi를 사용하고 위의 권장 사항을 따르면 MySQL Workbench 8.0.11은 MySQL 서버 8.0.11에 로그인 할 수 있습니다.
oraclesoon


21
  • MySQL 명령 행 클라이언트 열기

  • 새로운 패스로 새로운 사용자 만들기

상단의 bin 폴더 경로의 예를 고려할 때 명령 프롬프트에서 한 줄씩 실행 해야하는 코드는 다음과 같습니다.

cd C:\Program Files\MySQL\MySQL Server 5.7\bin
MySQL -u root -p    
current password...***  
CREATE USER 'nativeuser'@'localhost'  
IDENTIFIED WITH mysql_native_password BY 'new_password';
  • 그런 다음 Workbench에 다시 액세스 할 수 있습니다 (새 로컬 호스트 연결을 작성하고 새 신임 정보를 사용하여 프로그램 사용을 시작한 후에이를 수행 할 수 있어야 함).

위에서 언급 한 사용자 이름 (기본 사용자)으로 새 로컬 호스트 연결을 설정하고 비밀번호 (new_password)를 사용하여 로그인하십시오.

영상

예의 : Career365 팀이 답변 한 UDEMY FAQ


이것은 효과가 있었다. 왜? 연결하려고 할 때이 오류가 발생 root했으며 암호는 없습니다 Sequel Pro. 명령 행에서는 작동했지만 암호는 없습니다 .
Volte

매력처럼, 스레드 시작 질문과의 완전한 코 릴레이션 및주의 사항 : Mac OS Catalina, docker 19.03, mysql 최신 이미지가 있어야 하며이 명령을 실행하십시오 $ docker run -p 3306 : 3306 -d --name mysql -e MYSQL_ROOT_PASSWORD = password dzone 웹 사이트의 mysql / mysql-server.
만세

13

Docker 또는 Docker Compose를 사용하는 사람들은 MySQL 이미지 버전을 설정하지 않았기 때문에이 오류가 발생했습니다. Docker는 자동으로 최신 버전 인 8을 얻으려고 시도합니다.

MySQL을 5.7로 설정하고 이미지를 다시 빌드했으며 정상적으로 작동했습니다.

version: '2'
services: 
  db:
   image: mysql:5.7

3
버전 5 대신 버전 8을 사용해야하는 유효한 이유가 있습니다. 버전 5 대신 버전 8을 사용하고 싶기 때문에이 페이지에 있습니다
Zach Smith

2
사용하는 mysql:5.7대신 mysql:latest나를 위해 해결 문제
프란체스코 Borzi

13

이것은 docker-compose의 내 databdase 정의입니다.

dataBase:
    image: mysql:8.0
    volumes:
        - db_data:/var/lib/mysql
    networks:
        z-net:
            ipv4_address: 172.26.0.2
    restart: always
    entrypoint: ['docker-entrypoint.sh', '--default-authentication-plugin=mysql_native_password']
    environment:
        MYSQL_ROOT_PASSWORD: supersecret
        MYSQL_DATABASE: zdb
        MYSQL_USER: zuser
        MYSQL_PASSWORD: zpass
    ports:
        - "3333:3306"

해당 라인에 진입 점이 있습니다 있습니다.

빌드 및 빌드 한 후 다음을 사용하여 테스트 할 수 있습니다.

$ mysql -u zuser -pzpass --host=172.26.0.2  zdb -e "select 1;"
Warning: Using a password on the command line interface can be insecure.
+---+
| 1 |
+---+
| 1 |
+---+

11

Windows 10의 경우

  1. my.ini파일 수정C:\ProgramData\MySQL\MySQL Server 8.0\

    [mysqld]
    default_authentication_plugin=mysql_native_password
  2. MySQL 서비스를 다시 시작하십시오.

  3. 명령 행에서 MySQL에 로그인하고 MySQL에서 다음 명령을 실행하십시오.

    • 새 사용자를 작성하십시오.

      CREATE USER 'user'@'localhost' IDENTIFIED BY 'password';
    • 모든 권한을 부여하십시오.

      GRANT ALL PRIVILEGES ON * .* TO 'user'@'localhost';
  4. MySQL 워크 벤치를 열고 새 사용자 자격 증명을 사용하여 새 연결을 엽니 다.

나는 같은 문제에 직면하고 있었고 이것이 효과가 있었다.


9

다음은 Windows 10에서 MySQL 8.0을 설치 한 후 저에게 효과적이었습니다.

MySQL 사용자 이름이 root 있고 비밀번호가admin

명령 프롬프트를 열고 다음 명령을 입력하십시오.

cd C : \ Program Files \ MySQL \ MySQL Server 8.0 \ bin

mysql_upgrade -uroot -padmin

mysql -uroot -padmin

'admin'에 의해 mysql_native_password로 식별 된 ALTER USER 'root'@ 'localhost'


8

나와 같은 GitLab CI 에서이 오류가 발생하면 최신 버전에서 5.7 버전으로 변경하십시오.

# .gitlab-ci.yml

rspec:
  services:
    # - mysql:latest (I'm using latest version and it causes error)
    - mysql:5.7 #(then I've changed to this specific version and fix!)

7

나는 그것을 발견했다

ALTER USER 'username'@'ip_address' IDENTIFIED WITH mysql_native_password BY 'password';

그 자체로는 작동하지 않았습니다. 나도 설정해야

[mysqld]
    default_authentication_plugin=mysql_native_password

PHP 7.0을 실행하는 Ubuntu 18.04의 /etc/mysql/mysql.conf.d/mysqld.cnf


이것은 Centos 7에서 나를 위해 일했습니다. 어떤 이유로 든 암호가 기본적으로 caching_sha2_password로 저장되었으며 phpMyAdmin으로 로그인하려고 할 때 오류 # 1251이 발생했습니다.
DaFudgeWizzad

6

내 SQL 명령 promt를 엽니 다.

1 단계

그런 다음 mysql 비밀번호를 입력하십시오.

2 단계

마지막으로 사용하십시오 :

ALTER USER 'username'@'ip_address' IDENTIFIED WITH mysql_native_password BY 'password';

참조 : https://stackoverflow.com/a/49228443/6097074

감사.



6

사용중인 도구가 MySQL8과 호환되지 않는 경우이 오류가 발생합니다. MySQL8 용 최신 버전의 MySQL Workbench로 업데이트하십시오.


5

위의 답변과 거의 같지만 간단한 쿼리 일 수 있습니다 .MySQL 업그레이드 후 최대 절전 모드와 함께 봄 부팅 응용 프로그램 에서이 오류가 발생했습니다. 우리는 DB에 대해 아래 쿼리를 실행하여 새로운 사용자를 만들었습니다. 나는 이것이 최신의 좋은 인증 caching_sha2_password 대신 sha256_password를 사용하는 임시 해결책이라고 생각합니다.

CREATE USER 'username'@'localhost' IDENTIFIED WITH mysql_native_password BY 'pa$$word';

GRANT ALL PRIVILEGES ON * .* TO 'username'@'localhost';

4

macOS 용 MySQLWorkbench 8.0.11이이를 해결합니다. docker에서 실행중인 루트 암호로 보호 된 mysql 인스턴스와 연결을 설정할 수 있습니다.


이것이 나를 위해 고친 것입니다. 8.0 서버에서 이전 MySQL Workbench 6.3을 실행 중이었습니다. 여기에 많은 답변이 서버 호환성을 다운 그레이드한다고 말하지만 Workbench 버전을 최신 8.0 릴리스 (현재 8.0.15)로 업그레이드했습니다.
합계 없음

3

이것은 실제 솔루션 이 아니어야하지만 , 붙어 있으면 로컬에서 작동합니다.

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

1
이것은 문제를 해결합니다.
kta

2

아래 솔루션이 나를 위해 일했습니다. 여기에 이미지 설명을 입력하십시오

Mysql Workbench-> Server-> Users and Privileges로 이동하십시오 1. 계정 추가를 클릭하십시오.

2. Login (로그인) 탭에서 새로운 세부 정보를 제공하고 인증 유형을 표준 으로 선택하고 해당 관리 역할 및 스키마 권한 을 선택해야합니다.

여기에 이미지 설명을 입력하십시오


2

다른 컴퓨터의 텍스트 기반 MySQL 클라이언트에서 Docker 여부에 관계없이 MySQL 서버에 연결하려는 경우

대부분의 답변은 데스크톱 클라이언트에서 연결하거나 이전 인증 방법으로 전환하도록 요청하는 것입니다. MySQL 클라이언트 (텍스트 기반)와 연결하는 경우 Docker 컨테이너의 Debian Buster와 함께 작동하게했습니다.

apt 시스템이 있고 wget이 설정되어 있다고 가정하면 다음을 수행하십시오.

  1. sudo apt-get update
  2. sudo apt-get install lsb-release -y
  3. MySQL 웹 사이트 에서 적절한 소스를 업데이트하는 데비안 패키지를 다운로드 하십시오 .
  4. sudo dpkg -i mysql-apt-config_0.8.13-1_all.deb원하는 옵션을 선택하십시오. 내 경우에는 MySQL Tools & Connectors활성화 해야 합니다.
  5. sudo apt-get update
  6. sudo apt-get install mysql-client -y
  7. 끝난. 이제 새로운 MySQL 클라이언트를 실행하고 새로운 인증 방법에 연결할 수 있습니다.

WSL 문제에 대한 정답입니다. 감사합니다!
Andrew Landsverk

1

MySql을 다운로드하고 설치하는 동안 레거시 비밀번호를 사용해보십시오. 또는 Mac OS 용 Santhosh Shivan이 게시 한 방법을 따르십시오.


0

8.0.11-rc의 개발 릴리스를 다운로드하면 Mac에서 효과적이었습니다. 다음 docker 명령을 사용하십시오.

docker run --name mysql -p 3406:3306 -e MYSQL_ROOT_PASSWORD=mypassword -d mysql

-3

MySQL 5.7을 설치 하여이 문제를 해결했습니다.

1 단계 – MySQL 리포지토리 활성화

우선, 시스템에서 MySQL 5.7 커뮤니티 릴리스 yum 저장소를 활성화해야합니다. yum 저장소 구성을위한 rpm 패키지는 MySQL 공식 웹 사이트에서 제공됩니다. 운영 체제 버전에 따라 아래 명령 중 on을 사용하십시오.

CentOS 및 RHEL 7에서

yum localinstall https://dev.mysql.com/get/mysql57-community-release-el7-9.noarch.rpm

CentOS 및 RHEL 6에서

yum localinstall https://dev.mysql.com/get/mysql57-community-release-el6-9.noarch.rpm

페도라 27

dnf install https://dev.mysql.com/get/mysql57-community-release-fc27-9.noarch.rpm

페도라 26에서

dnf install https://dev.mysql.com/get/mysql57-community-release-fc26-9.noarch.rpm

페도라 25에서

dnf install https://dev.mysql.com/get/mysql57-community-release-fc25-9.noarch.rpm

2 단계 – MySQL 5.7 서버 설치

시스템에서 MySQL yum 리포지토리를 성공적으로 활성화했습니다. 이제 운영 체제 버전에 따라 다음 명령을 사용하여 MySQL 5.7 커뮤니티 서버를 설치하십시오.

CentOS 및 RHEL 7/6에서

yum install mysql-community-server

Fedora 27/26/25에서

 dnf install mysql-community-server

출처 : https://tecadmin.net/install-mysql-5-7-centos-rhel/


-5

이전 설치 (MySQL Community Server 5.7 및 Workbench 6.1)로 롤백하고 새로운 MySQL 자격 증명을 설정하면 나에게 도움이되었습니다!

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.