Plugin autentikasi 'caching_sha2_password' tidak dapat dimuat


435

Saya menghubungkan MySQL - 8.0 dengan MySQL Workbench dan mendapatkan kesalahan di bawah ini:

Plugin autentikasi 'caching_sha2_password' tidak dapat dimuat: dlopen (/usr/local/mysql/lib/plugin/caching_sha2_password.so, 2): gambar tidak ditemukan

Saya sudah mencoba dengan alat klien lain juga.

Ada solusi untuk ini?


2
Anda mungkin dapat memperbaiki masalah ini jika Anda mengkonfigurasi MySQL 8.0 untuk berjalan dalam mode mysql_native_password.
Raymond Nijland

6
Benar, MySQL Workbench membutuhkan pembaruan konektor untuk dapat bekerja dengan kata sandi cache SHA2 (segera hadir).
Mike Lischke

7
Saya menetapkan login default ke asli dan memulai kembali, masalahnya tetap ada dan saya tidak bisa login untuk membuat pengguna baru. Mengejutkan bahwa pada tahun 2018 menginstal Mysql dan meja kerja tidak kehabisan kotak. Kontrol kualitas yang buruk.
ChrisR

1
Saya tidak tahu dari mana Anda mendapat kesan bahwa tidak akan ada lagi klien mysql 32bit, tetapi itu tidak benar. Yang benar adalah bahwa MySQL Workbench tidak lagi hadir dengan versi 32bit.
Mike Lischke

2
Jawaban-jawaban yang menyarankan untuk menggunakan enkripsi yang lebih lemah bukanlah cara yang benar. Gunakan klien lain seperti tableplus .
ohkts11

Jawaban:


279

Catatan: Untuk MAC OS

  1. Buka MySQL dari System Preferences> Initialize Database>
  2. Ketikkan kata sandi baru Anda.
  3. Pilih 'Gunakan kata sandi lama'
  4. Mulai Server lagi.
  5. Sekarang hubungkan MySQL Workbench

uraian gambar; kesan


Ini membantu pada OSX
Salam

2
Ini berhasil, terima kasih. Saya pikir itu berhasil karena meja kerja MySQL menggunakan enkripsi kata sandi lama untuk terhubung ke server DB. Dapat juga dilakukan saat menginstal MySQL dan memilih enkripsi Legacy, alih-alih enkripsi kata sandi Strong yang disarankan.
monkSinha

1
Beberapa versi mysql memiliki pengaturan pannel yang berbeda dan ini tidak dapat berfungsi
Michael Yang

8
Beriklan untuk kembali ke autentikasi lama dan kurang aman bukanlah solusi yang baik sama sekali.
Mike Lischke

63
Saya tidak punya MySQL di System Preferences
JavaRunner

248

Anda dapat mengubah enkripsi kata sandi seperti ini.

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

33
Bagaimana jika OP ingin menggunakan metode otentikasi keren yang baru?
LibertyPaul

@twocold, permintaan skrip bagus. + 1
Md Haidar Ali Khan

Perhatikan bahwa nama pengguna dan kata sandi Anda harus diapit dengan tanda kutip tunggal seperti yang ditunjukkan dalam kode oleh @twocold.
matrix

@twocold Bagaimana Anda "membatalkan" PENGGUNA ALTER di atas kembali ke standar MySQL 8.0 (tingkat enkripsi baru) setelah Anda melakukan itu dan itu tidak berhasil?
Will Belden

1
@BrianFitzGerald "caching_sha2_password", tautan di sini atau di sini .
Yan Karin

114

Untuk Windows 10:

Buka prompt perintah:

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

Atau, Anda dapat mengubah konfigurasi my.ini sebagai berikut:

[mysqld]

default_authentication_plugin=mysql_native_password

Mulai ulang Server MySQL dan buka Workbench lagi.


1
Mengubah my.ini tidak akan berhasil untuk saya - tetapi perubahan command prompt berhasil.
amelvin

Mengubah my.ini telah menyelesaikan masalah saya. Terima kasih.
Berkant


Saya hanya ingin mencatat bahwa konfigurasi harus dilakukan di server yang ingin Anda sambungkan, dan ALTER USER berfungsi agar saya dapat terhubung dari Windows ke server mysql jarak jauh
Alcides

Tidak terbatas pada Windows 10
Geza Turi

76

Anda dapat mengubah enkripsi kata sandi pengguna dengan mengubah pengguna dengan perintah Alter di bawah ini:

ALTER USER 'username' @ 'ip_address' DIIDENTIFIKASI DENGAN mysql_native_password DENGAN 'password';

ATAU

Kami dapat menghindari kesalahan ini dengan membuatnya berfungsi dengan plugin kata sandi lama:

Pertama-tama ubah plugin autentikasi dalam file my.cnf untuk Linux / file my.ini di Windows :

[mysqld]

default_authentication_plugin = mysql_native_password

Mulai ulang server mysql untuk mengambil perubahan dalam pengaruh dan coba sambungkan melalui MySQL dengan klien mysql.

Jika masih tidak dapat terhubung dan mendapatkan kesalahan di bawah ini:

Unable to load plugin 'caching_sha2_password'

Ini berarti pengguna Anda membutuhkan plugin di atas. Jadi cobalah membuat pengguna baru dengan membuat perintah pengguna atau memberikan setelah mengubah plugin default. maka pengguna baru memerlukan plugin asli dan Anda akan dapat menghubungkan MySQL.

Terima kasih


5
Jelas itu bukan solusi masalah dengan plug-in yang hilang.
LibertyPaul

1
Ini. Masalahnya adalah bahwa perangkat lunak manajemen DB belum menanganinya. Jadi kecuali jika Anda adalah dev workbench mysql, ini adalah solusi Anda untuk saat ini.
Kevin Gagnon

Bekerja untukku. Terima kasih
Lucas Araújo

Bagian tentang membuat pengguna baru setelah menambahkan flag konfigurasi sangat penting.
nipponese

70

Saat ini (pada 2018/04/23), Anda perlu mengunduh a rilis pengembangan . The GA -orang tidak bekerja.

Saya tidak dapat terhubung dengan versi GA terbaru (6.3.10).

Ini berfungsi dengan baik mysql-workbench-community-8.0.11-rc-winx64.msi(dari https://dev.mysql.com/downloads/workbench/ , tab Rilis Pengembangan ).


4
Ini sebenarnya jawaban yang tepat: MySQL 8.0 membutuhkan MySQL Workbench 8.0, yang sayangnya masih terlihat dalam mode beta. Tetapi begitu terinstal, Anda dapat tetap menggunakan enkripsi kata sandi SHA baru, tidak perlu mengubah apa pun.
Cristi S.

Bukan beta tetapi kandidat rilis (RC). Versi GA (umumnya tersedia) akan segera hadir.
Mike Lischke

Ide terbaik untukku.
Wojciech Fornal

2
Ini masih terjadi. Pemasangan versi GA masih mengakibatkan ketidakmampuan untuk masuk menggunakan enkripsi kata sandi yang direkomendasikan. Tidak ada peringatan bahwa versi GA hanya berfungsi dengan otentikasi lawas.
Donald Rich

2
Setidaknya di MacOS, versi GA saat ini 8.0.12 (2018/08/13) dan menyelesaikan masalah! Terima kasih!
Bruno Silvano

63

Saya memiliki masalah yang sama, tetapi jawaban oleh Aman Aggarwal tidak bekerja untuk saya dengan wadah Docker menjalankan mysql 8.X. Saya masuk ke dalam wadah

docker exec -it CONTAINER_ID bash

kemudian login ke mysql sebagai root

mysql --user=root --password

Masukkan kata sandi untuk root (Default adalah 'root') Akhirnya Jalankan:

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

Anda sudah siap.


Sepertinya ini bisa menjadi jawaban yang bagus untuk apa yang saya cari. Tapi saya tidak tahu apa itu "ini". maksud Anda jawaban yang diterima? atau yang lain ...
Zach Smith

1
Ya @ZachSmith, "ini" merujuk ke penjawab yang diterima.
axelferreira

Bagaimana kalau docker exec -it CONTAINER_ID mysql --user=root --passwordalih - alih dua perintah yang mengandalkan keberadaan bashshell (yang tidak pasti di masa depan)?
Eric

Ini tidak bekerja dengan sequelpro 1.1.2 menggunakan docker desktop 2.0.3.0 (mac). perintah semua berfungsi, tetapi sekuel pro kesalahan saat masuk - menggunakan mysql: latest (v8.0.15)
arcseldon

Seperti yang orang lain telah laporkan, menggunakan mysql 5.7 bekerja tanpa memerlukan apa-apa:docker run -p 3306:3306 --name mysql1 -e MYSQL_ROOT_PASSWORD=secret -d mysql:5.7
arcseldon

47

Ok, terbuang banyak waktu untuk hal ini, jadi ini ringkasannya pada 19 Maret 2019

Jika Anda secara khusus mencoba menggunakan gambar Docker dengan MySql 8+ , dan kemudian menggunakan SequelPro untuk mengakses basis data Anda yang berjalan pada wadah buruh pelabuhan itu, Anda kurang beruntung.

Lihat masalah sekuelpro 2699

Setup saya adalah sequelpro 1.1.2 menggunakan docker desktop 2.0.3.0 (mac - mojave), dan mencoba menggunakan mysql: latest (v8.0.15).

Seperti yang telah dilaporkan orang lain, menggunakan mysql 5.7 berfungsi tanpa membutuhkan apa-apa:

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

Tentu saja, dimungkinkan untuk menggunakan MySql 8+ pada buruh pelabuhan, dan dalam situasi itu (jika perlu), jawaban lain yang diberikan di sini untuk caching_sha2_passwordmasalah tipe berfungsi. Tetapi sekuelpro adalah NO GO dengan MySql 8+

Akhirnya, saya mengabaikan sequelpro (teman tepercaya dari tahun 2013-2014) dan bukannya menginstal DBeaver . Semuanya bekerja di luar kotak. Untuk buruh pelabuhan, saya menggunakan:

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

Anda dapat dengan cepat mengintip basis data mysql menggunakan:

docker exec -it mysql1 bash

mysql -u root -p

show databases;

1
Terima kasih banyak untuk berbagi ini. Saya mencoba kombo yang sama persis setelah secara tidak sengaja menghapus wadah dev MySQL saya.
martn_st

1
Sangat menyedihkan bahwa Sequel Pro tidak aktif berkembang lagi :( Berita terbaru bertanggal 3 April 2016, saat ini sudah 2019. Itu adalah alat terbaik yang pernah saya lihat untuk penjelajah MySQL.
Oleksii Shnyra

@OleksiiShnyra benar tidak ada rilis produksi untuk beberapa tahun, tetapi FYI, rilis "malam" yang lebih baru tersedia. sequelpro.com/test-builds dan via brew cask install homebrew/cask-versions/sequel-pro-nightly.
Peter W

Ada solusi yang dapat membuat SequelPro berfungsi, bagi mereka yang dapat masuk melalui baris perintah ( mysqlklien) dan ALTERtabel myslq.user mereka, yang tercantum di sini: github.com/ followingelpro
Peter W

Jika Anda menggunakan MySQL 8 dan tidak ingin menurunkan versi ke mysql_native_password, Anda dapat mengikuti ini: stackoverflow.com/a/56402217/2321594
Aidin

46

Saya menginstal MySQL pada PC Windows 10 saya menggunakan " MySQL Web Installer " dan menghadapi masalah yang sama ketika mencoba terhubung menggunakan meja kerja MySQL. Saya memperbaiki masalah ini dengan mengkonfigurasi ulang server dari jendela Installer.

Pemasang Web MySQL - Layar Beranda

Mengklik pada opsi "Konfigurasi ulang" itu akan memungkinkan untuk mengkonfigurasi ulang server. Klik "Next" hingga Anda mencapai "Metode Otentikasi".

Pemasang MySQL - Metode Otentikasi

Setelah di tab ini, gunakan opsi kedua "Gunakan Metode Otentikasi Legacy (Pertahankan Kompatibilitas MySQL 5.x)".

Pertahankan segala sesuatu sebagaimana adanya dan itulah cara saya memecahkan masalah saya.


1
Saya secara manual unzip mysql-8.0.11-winx64.zip dan tidak dapat dengan mudah menyelesaikan masalah "caching_sha2_password tidak dapat dimuat". Namun menggunakan mysql-installer-community-8.0.11.0.msi dan saya mengikuti rekomendasi di atas, MySQL Workbench 8.0.11 dapat masuk ke server MySQL 8.0.11.
oraclesoon


21
  • Buka Klien Baris Perintah MySQL

  • Buat pengguna baru dengan pass baru

Mempertimbangkan contoh jalur ke folder tempat sampah di atas, inilah kode yang perlu Anda jalankan di command prompt, baris demi baris:

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';
  • Kemudian, Anda dapat mengakses Workbench lagi (Anda harus dapat melakukannya setelah membuat koneksi localhost baru dan menggunakan kredensial baru untuk mulai menggunakan program).

Siapkan koneksi host lokal baru dengan nama pengguna yang disebutkan di atas (pengguna asli), login menggunakan kata sandi (new_password)

Gambar

Courtesy: FAQ UDEMY dijawab oleh Tim Career365


Ini berhasil. Mengapa? Saya mendapatkan kesalahan ini ketika mencoba terhubung dengan rootdan tidak ada kata sandi, yang berfungsi di baris perintah, tetapi tidak di Sequel Pro.
Volte

berfungsi seperti pesona, korelasi penuh dengan pertanyaan Mulai Thread dan harap dicatat: Anda harus memiliki Mac os Catalina, buruh pelabuhan 19.03, gambar terbaru mysql, ambil perintah ini $ docker run -p 3306: 3306 -d --name mysql -e MYSQL_ROOT_PASSWORD = kata sandi mysql / mysql-server dari situs web dzone.
banzai

13

Bagi mereka yang menggunakan Docker atau Docker Compose, saya mengalami kesalahan ini karena saya tidak mengatur versi gambar MySQL saya. Docker akan secara otomatis berusaha mendapatkan versi terbaru yaitu 8.

Saya mengatur MySQL ke 5.7 dan membangun kembali gambar dan berfungsi seperti biasa:

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

3
Ada alasan yang sah untuk menggunakan versi 8 alih-alih versi 5. Saya ada di halaman ini karena saya ingin menggunakan versi 8 alih-alih versi 5
Zach Smith

2
menggunakan mysql:5.7alih-alih mysql:latestmenyelesaikan masalah untuk saya
Francesco Borzi

13

Ini adalah definisi basis data saya di komposisi buruh pelabuhan saya:

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"

Baris yang relevan ada titik masuk .

Setelah membangun dan meningkatkannya, Anda dapat mengujinya dengan:

$ 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

Untuk Windows 10 ,

  1. Ubah my.inifile dalamC:\ProgramData\MySQL\MySQL Server 8.0\

    [mysqld]
    default_authentication_plugin=mysql_native_password
  2. Mulai ulang Layanan MySQL.

  3. Login ke MySQL pada baris perintah, dan jalankan perintah berikut di MySQL:

    • Buat pengguna baru.

      CREATE USER 'user'@'localhost' IDENTIFIED BY 'password';
    • Berikan semua hak istimewa.

      GRANT ALL PRIVILEGES ON * .* TO 'user'@'localhost';
  4. Buka meja kerja MySQL, dan buka koneksi baru menggunakan kredensial pengguna baru.

Saya menghadapi masalah yang sama dan ini berhasil.


9

Berikut adalah solusi yang bekerja untuk saya setelah Instalasi MySQL 8.0 pada Windows 10.

Misalkan nama pengguna MySQL adalah rootdan kata sandiadmin

Buka command prompt dan masukkan perintah berikut:

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

mysql_upgrade -uroot -padmin

mysql -uroot -padmin

ALTER USER 'root' @ 'localhost' DIIDENTIFIKASI DENGAN mysql_native_password OLEH 'admin'


8

Jika Anda mendapatkan kesalahan ini di GitLab CI seperti saya: Cukup ubah dari versi terbaru ke versi 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

Saya menemukan itu

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

tidak bekerja dengan sendirinya. Saya juga perlu mengatur

[mysqld]
    default_authentication_plugin=mysql_native_password

di /etc/mysql/mysql.conf.d/mysqld.cnf di Ubuntu 18.04 menjalankan PHP 7.0


Ini bekerja untuk saya di Centos 7. Untuk beberapa alasan, kata sandi saya disimpan sebagai caching_sha2_password secara default dan saya mendapatkan kesalahan # 1251 ketika mencoba masuk dengan phpMyAdmin.
DaFudgeWizzad



6

Kesalahan ini muncul ketika alat yang digunakan tidak kompatibel dengan MySQL8, coba perbarui ke versi terbaru dari MySQL Workbench untuk MySQL8


5

Hampir seperti jawaban di atas tetapi mungkin dalam pertanyaan sederhana, saya mendapatkan kesalahan ini dalam aplikasi boot semi saya bersama dengan hibernate setelah upgrade MySQL. Kami membuat pengguna baru dengan menjalankan kueri di bawah ini terhadap DB kami. Saya percaya ini adalah pekerjaan sementara untuk menggunakan sha256_password alih-alih otentikasi caching_sha2_password terbaru dan bagus.

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

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

4

MySQLWorkbench 8.0.11 untuk alamat macOS ini. Saya dapat membuat koneksi dengan instance mysql yang dilindungi kata sandi root berjalan di buruh pelabuhan.


Inilah yang diperbaiki untuk saya. Saya menjalankan MySQL Workbench 6.3 yang lebih lama dengan server 8.0. Sementara banyak jawaban di sini mengatakan untuk menurunkan kompatibilitas server, saya hanya memutakhirkan versi Workbench saya ke rilis 8.0 terbaru (saat ini 8.0.15).
Jumlah Tidak Ada

4

Meskipun ini seharusnya bukan solusi nyata , itu bekerja secara lokal jika Anda macet

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

1
Ini menyelesaikan masalah.
kta

2

Solusi di bawah ini berhasil untuk saya masukkan deskripsi gambar di sini

Pergi ke Mysql Workbench -> Server-> Users and Privileges 1. Klik Tambah Akun

2. Di Bawah Tab Masuk, berikan perincian baru dan pastikan untuk memilih Jenis Otentikasi sebagai standar dan pilih masing-masing peran administratif dan Keistimewaan Skema

masukkan deskripsi gambar di sini


2

Jika Anda mencoba untuk terhubung ke server MySQL dari klien MySQL berbasis teks dari komputer lain (apakah itu Docker atau tidak)

Sebagian besar jawaban di sini melibatkan koneksi dari klien desktop, atau meminta Anda untuk beralih ke metode otentikasi yang lebih lama. Jika Anda menghubungkannya dengan klien MySQL (berbasis teks), saya membuatnya bekerja dengan Debian Buster dalam wadah Docker.

Katakanlah Anda memiliki sistem apt dan wget mengatur, lakukan hal berikut:

  1. sudo apt-get update
  2. sudo apt-get install lsb-release -y
  3. Unduh paket Debian yang memperbarui sumber yang tepat untuk Anda dari situs web MySQL .
  4. sudo dpkg -i mysql-apt-config_0.8.13-1_all.debdan pilih opsi yang Anda inginkan. Dalam kasus saya, saya hanya perlu MySQL Tools & Connectorsdiaktifkan.
  5. sudo apt-get update
  6. sudo apt-get install mysql-client -y
  7. Selesai Anda sekarang dapat menjalankan klien MySQL baru dan terhubung dengan metode otentikasi baru.

Ini adalah jawaban yang tepat untuk masalah WSL, terima kasih!
Andrew Landsverk

1

Coba gunakan kata sandi lama saat mengunduh dan menginstal MySql, itu membantu saya. Atau ikuti metode yang diposting oleh Santhosh Shivan untuk Mac OS.


0

Mengunduh rilis pengembangan 8.0.11-rc bekerja untuk saya di mac. dengan perintah buruh pelabuhan berikut:

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

-3

Saya memecahkan masalah ini dengan menginstal MySQL 5.7:

Langkah 1 - Aktifkan MySQL Repository

Pertama-tama, Anda harus mengaktifkan repositori yum rilis komunitas MySQL 5.7 pada sistem Anda. Paket-paket rpm untuk konfigurasi repositori yum tersedia di situs web resmi MySQL. Gunakan perintah di bawah sesuai versi sistem operasi Anda.

Pada CentOS dan RHEL 7

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

Pada CentOS dan RHEL 6

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

Pada Fedora 27

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

Pada Fedora 26

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

Pada Fedora 25

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

Langkah 2 - Instal MySQL 5.7 Server

Karena Anda telah berhasil mengaktifkan repositori MySQL yum di sistem Anda. Sekarang, instal server komunitas MySQL 5.7 menggunakan perintah berikut sesuai versi sistem operasi Anda.

Pada CentOS dan RHEL 7/6

yum install mysql-community-server

Pada Fedora 27/26/25

 dnf install mysql-community-server

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


-5

Mengembalikan ke instalasi sebelumnya (ke MySQL Community Server 5.7 dan Workbench 6.1) dan mengatur kredensial MySQL baru bekerja untuk saya!

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.