Koneksi sekuel Pro dan MySQL gagal


95

Saya baru saja menginstal mysql di mac dari Homebrew

brew install mysql

mysql -V

mysql  Ver 8.0.11 for osx10.13 on x86_64 (Homebrew)

dari terminal berfungsi dan saya dapat masuk ke mysql tetapi dari Sekuel Pro dikatakan

masukkan deskripsi gambar di sini

Tidak dapat terhubung ke host 127.0.0.1, atau waktu permintaan habis.

Pastikan alamatnya benar dan Anda memiliki hak istimewa yang diperlukan, atau coba tambah batas waktu koneksi (saat ini 10 detik).

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

tidak tahu apa yang saya lewatkan

Jawaban:


183

Ini karena Sequel Pro belum siap untuk jenis login pengguna baru, karena kesalahan menyatakan: tidak ada driver. Perbaikan cepat untuk penginstalan non-homebrew:

Apple Logo > System Preferences > MySQL > Initialize Database, lalu ketik sandi baru Anda dan pilih 'Gunakan sandi lama'

Setelah restart Anda harus dapat terhubung. Lakukan hanya pada penginstalan baru, karena Anda mungkin kehilangan tabel db Anda jika tidak.

mysql + homebrew

Pada dasarnya Anda harus melakukan beberapa tindakan secara manual, namun- data database Anda tidak akan dihapus seperti pada solusi di atas

  • Buka file [my.cnf] [1] dan di bagian [mysqld]tambahkan baris:

    default-authentication-plugin=mysql_native_password

  • Masuk ke server mysql dari terminal: jalankan mysql -u root -p, lalu di dalam shell jalankan perintah ini (ganti [kata sandi] dengan kata sandi Anda yang sebenarnya):

    ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '[password]';

  • keluar dari shell mysql dengan exitdan jalankan brew services restart mysql.

Harus bekerja.


my.cnf

File my.cnf terletak di /etc/my.cnf di Unix / Linux


14
Saya tidak dapat menemukan MySQL di System Preferences
Hattori Hanzō

2
terima kasih telah menjelaskan, tetapi tidak dapat menemukan my.cnffile di mesin saya (macOS High Sierra 10.13.5)
Hattori Hanzō

2
Jika tidak ada file seperti itu, Anda harus membuatnya: silakan, lihat utas ini: stackoverflow.com/questions/7973927/…
Maciej Kwas

14
Ini bekerja dengan baik pada brew install mysqlpenggunaan baru/usr/local/etc/my.cnf
mintwhip

5
Saya tidak menggunakan kata sandi, jadi saya menggunakan ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '';- ini berhasil untuk saya
Vincent Tang

33

TL; DR: Sequel Pro sudah mati sejak 2016. Jangan downgrade DB Anda karena sebuah alat. Pindah ke alat alternatif.

Pembaruan 2020: Sekuel Pro secara resmi mati tetapi secara tidak resmi hidup! Anda dapat menemukan build " nightly " yang tidak memiliki masalah ini (misalnya mendukung Mysql 8 auth) di sini: https://sequelpro.com/test-builds


Semua solusi lain di sini merekomendasikan untuk mengubah pengaturan DB Anda (membuatnya kurang aman, seperti yang diiklankan oleh MySQL) untuk alat yang Anda gunakan. Itu tidak bisa saya terima.

Saya selalu menjadi penggemar berat Sequel Pro, bahkan menyumbang untuk itu. Tapi, dengan semua hasrat dan cinta saya, saya minta maaf jika alat ini tidak ada rilis sejak 2016 . YOLO, dan saya harus melanjutkan!

Alternatif yang saya temukan (dari https://stackoverflow.com/a/55235533/2321594 , terima kasih kepada @arcseldon) adalah DBeaver yang mendukung metode otentikasi baru (non-legacy) MySQL 8.

PS. Satu-satunya trik di sisi alat, bukan sisi DB adalah ketika Anda membuat koneksi MySQL 8 Anda mungkin perlu pergi ke "Driver Properties" (nanti dapat ditemukan di Edit Connection) dan ubah nilainya allowPublicKeyRetrievalmenjadi true.

Saya membutuhkan ini untuk terhubung ke container MySQL saya yang dibuat menggunakan Docker. Agar IP MySQL terlihat di luar, untuk aplikasi lain di ekosistem Anda (bukan hanya alat ini), Anda harus membuat pengguna baru di MySQL, atau meneruskan -e MYSQL_ROOT_HOST=%run-time atau sebagai ENV.


Saya yakin @Aidin Anda memberi saya suara negatif hanya karena jawaban saya tidak menyelesaikan masalah OP. Ini hanya pengembangan lokal dan pengaturan lokal - jadi apa gunanya? Apakah saya benar-benar harus meninggalkan perangkat lunak yang saya kenal dan saya suka bekerja hanya karena Anda berkata demikian?
Maciej Kwas

5
Tolong jangan anggap pribadi @MaciejKwas. Meskipun memberikan penjelasan lebih lanjut di sini, yang saya hargai, saya masih mendukung pemungutan suara saya. Tiga alasan utamanya adalah: 1) Mempertahankan pengaturan yang berbeda antara dev / prod tidak disarankan dalam pengembangan perangkat lunak modern. Faktanya, ini adalah faktor X dari 12factor.net/dev-prod-parity . 2) Orang dapat menggunakan alat ini untuk memeriksa produk juga. Anda dapat membuat ssh-tunnel / proxy dan mengakses DB prod Anda melalui alat GUI. Dalam kasus seperti itu, menurunkan autentikasi DB bukanlah suatu pilihan. 3) Secara pribadi, tidak beradaptasi dengan perubahan dan peningkatan adalah sesuatu yang tidak saya hargai.
Aidin

1
Saya kembali ke proyek MySQL. Saya tidak menjalankan proyek secara lokal dalam beberapa tahun b / c sudah solid dan saya sangat sedih mengetahui bahwa sekuel pro sudah mati :(
Catfish

Pilih juga driver MySQL +8 di DBeaver karena ada banyak driver yang bisa dipilih. Di properti driver, setel allowPublicKeyRetrieval ke true dan simpan.
Peheje

18
  1. Dengan asumsi Anda tidak memiliki konfigurasi mysql , gema yang berikut ini ke~/.my.conf
[mysqld]
default-authentication-plugin=mysql_native_password
  1. Masuk ke mysql denganmysql -u root -p
  2. Setel kata sandi pengguna root dengan di ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '[PASSWORD]';mana [PASSWORD]kata sandi pilihan Anda.
  3. Mulai ulang mysql dengan misbrew services restart mysql

8

Sekuel Pro secara resmi mati dan tidak lagi mendukung fitur MySql yang lebih baru. Namun, kabar baiknya adalah itu digantikan oleh Sekuel Ace yang tersedia di GitHub dan App store . Aplikasi ini gratis dan terlihat seperti pengganti resmi untuk Sequel Pro karena kiriman tersebut dibuat oleh salah satu kolaborator dari Sequel Pro .

Ps. Saya memutuskan untuk memposting ini sebagai jawaban karena orang lain belum menyebutkan bahwa sekarang ada pengganti terbaru untuk Sequel Pro


Terima kasih atas beritanya, sangat dihargai.
Hattori Hanzō

Akhirnya! Telah menunggu beberapa saat.
Jonny

6

Jika Anda terhubung ke MySQL melalui root@127.0.0.1, pastikan Anda juga menyetel ulang kata sandinya!

ALTER PENGGUNA 'root'@'127.0.0.1' DIIDENTIFIKASI DENGAN mysql_native_password DENGAN '[password]';


Saya mendapatkan:ERROR 3009 (HY000): Column count of mysql.user is wrong. Expected 50, found 49. Created with MySQL 80012, now running 80013. Please use mysql_upgrade to fix this error.
Chance Smith

coba ini di terminal: mysql_upgrade --force -uroot -p
Xeno

mysql_upgrade sekarang sudah tidak digunakan lagi dan tidak akan berfungsi, gunakan mysqld --upgrade = FORCE sebagai gantinya.
ilovecookiez11

1

Jika ada yang menghadapi masalah ini dan menginstal MySQL version >8melalui .dmgunduhan dari tautan resmi. Jika demikian, harap gunakan pedoman ini .


1
Menggunakan kata sandi gaya lama berhasil untuk saya. Terima kasih!
Richard Witherspoon

1

Ini bekerja untuk saya. jika Anda mendapatkan kesalahan ini:

Tidak dapat terhubung ke host 127.0.0.1, atau waktu permintaan habis.

Pastikan alamatnya benar dan Anda memiliki hak istimewa yang diperlukan, atau coba tambah batas waktu koneksi (saat ini 10 detik).

MySQL berkata: Plugin otentikasi 'caching_sha2_password' tidak dapat dimuat: dlopen (/usr/local/lib/plugin/caching_sha2_password.so, 2):

Tolong coba solusi ini

masukkan deskripsi gambar di sini


Bekerja seperti pesona.
Jimmy Adaro
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.