it-swarm.asia

Mencoba menggunakan MySQL Workbench dengan TCP / IP melalui SSH - gagal terhubung

Saya tidak dapat terhubung menggunakan koneksi TCP/IP melalui SSH di MySQL Workbench dari PC. Apa yang sedang terjadi?

Saya membuat database MySQL 5.1 pada server Ubuntu mysql.myhost.com. Saya dapat mengaksesnya secara lokal. MySQL Workbench (PC) menawarkan untuk membuat koneksi melalui TCP lebih dari ssh. Ini berjalan pada port 3306 pada server jarak jauh di mana mysql baris perintah berfungsi dengan baik.

Saya menggunakan detail sesi berikut:

  • Metode Koneksi: TCP/IP melalui SSH.
  • Nama Host SSH: mysql.myhost.com: 3306
  • Nama pengguna SSH: login linux saya
  • File kunci publik SSH: file kunci publik lokal saya
  • Hostname MySQL: 127.0.0.1 MySQL
  • Port Server: 3306
  • Nama pengguna: root

Saya mendapatkan pesan kesalahan ketika saya mencoba menghubungkan: "Gagal terhubung ke MySQL pada 127.0.0.1:3306 melalui terowongan SSH di mysql.myhost.com dengan root pengguna"

"Tidak dapat terhubung ke server MySQL di '127.0.0.1' (10061)"

Sebagai tes lain - saya membuat terowongan SSH dengan port 3306 menggunakan PutTY dan saya dapat menghubungkan OK menggunakan MySQL Workbench melalui terowongan yang meneruskan koneksi ke 3306 lokal saya ke server jauh seperti yang dijelaskan di atas. Tapi saya tidak bisa mendapatkan "TCP/IP over SSH" bekerja di Workbench.

Pertanyaan sekunder: ketika Workbench meminta "Path ke file kunci publik SSH" bukankah itu benar-benar membutuhkan file kunci pribadi saya?

43
Dizzley

Saya menemukan pertanyaan ini ketika saya sendiri mengalami kesalahan ini. Saya akhirnya bisa mengetahui konfigurasi.

  1. Saya tidak menyentuh apa pun di /etc/mysql/my.cnf yang sudah memiliki bind_address = 127.0.0.1. Jadi hanya localhost yang dapat terhubung.
  2. Saya menggunakan server OpenSSH. Jadi dalam file confignya/etc/ssh/sshd_config saya berubah dari no ke yes param yang bertanggung jawab untuk TCP penerusan, dengan demikian - AllowTcpForwarding ya.
  3. Akhirnya saya memasukkan yang berikut ini di MySQL WorkBench.

    • Nama Host SSH: 192.168.0.8:22 (server SSH saya mendengarkan port 22)
    • Nama Pengguna SSH: sshuser
    • File Kunci SSH: * C:\Users\windowsuser\.ssh\id_rsa * (harus berupa kunci pribadi, meskipun dikatakan publik)
    • Nama Host MySQL: 127.0.0.1 (ini tidak boleh diubah, karena server MySQL secara default hanya terikat pada localhost yang saya tidak ubah)
    • Port Server MySQL: 3306 (juga default)
    • Nama pengguna: root

Satu-satunya hal yang tersisa bagi Anda adalah mengkonfigurasi dengan benar server SSH Anda agar berfungsi dengan kunci daripada kata sandi. Semoga ini bisa membantu seseorang.

31
Eye

Saya pikir pendekatan TCP/IP over SSH bekerja dengan membuat koneksi SSH "normal" yang mendasari koneksi MySQL (dengan cara yang sama seperti yang Anda lakukan tunnel menggunakan -L dengan klien baris perintah OpenSSH).

Oleh karena itu, Anda harus menentukan koneksi ke server SSH di server tempat Anda membuat terowongan. Di sini, Anda tampaknya menggunakan mysql.myhost.com:3306, yang menyiratkan bahwa Anda menjalankan server SSH ini (bukan MySQL) pada port 3306.

Anda dapat mengikat server MySQL pada 127.0.0.1:3306 dan server SSH pada alamat IP eksternal Anda untuk mysql.myhost.com pada port 3306, tapi itu sangat tidak mungkin. Saya kira server SSH Anda mendengarkan pada port 22 (default).

Anda mungkin harus menggunakan mysql.myhost.com:22. (Periksa Anda dapat terhubung ke itu melalui klien SSH normal seperti Putty juga.)

8
Bruno

Anda mungkin perlu memeriksa pengguna di tabel mysql.user.

Jalankan kueri ini:

SELECT user,Host FROM mysql.user;

Anda harus melihat sesuatu seperti ini:

mysql> SELECT user,Host,password FROM mysql.user;
+------------------+-------------+-------------------------------------------+
| user             | Host        | password                                  |
+------------------+-------------+-------------------------------------------+
| root             | localhost   | *7A670E02260CDEEFF062DD08F3A6F6DA079998CB |
| ping             | %           | *124E1DB56CC8D6E2FEE8315BB2544BF04B980DB6 |
| admin            | 10.67.135.% | 1a6858054a41fede                          |
| icorbin          | 10.67.135.% | 366ed93a7396650e                          |
+------------------+-------------+-------------------------------------------+
4 rows in set (0.00 sec)

Mohon perhatikan itu

  • root @ localhost dapat login dari localhost saja.
  • ping @ '%' dapat masuk melalui TCP/IP
  • [email protected]% dapat login melalui TCP/IP hanya dari netblock itu
  • [email protected]% dapat masuk melalui TCP/IP hanya dari netblock itu

Jika Anda ingin root terhubung melalui TCP/IP, Anda harus menentukan alamat IP atau netblock untuk pengguna root.

Sesuatu seperti ini:

GRANT ALL PRIVILEGES ON *.* TO [email protected]'%' IDENTIFIED BY 'whateverpassword';

atau jika kata sandi root sama untuk root @ localhost

GRANT ALL PRIVILEGES ON *.* TO [email protected]'%' IDENTIFIED BY PASSWORD '*7A670E02260CDEEFF062DD08F3A6F6DA079998CB ';

CAVEAT: root @ '%' normanlly tidak disarankan. Mungkin coba [email protected]'10.% 'atau netblock lain untuk root.

Cobalah !!!

8
RolandoMySQLDBA

Anda mungkin menggunakan versi MySQL Workbench yang lebih lama dan perlu memperbarui. Ini adalah bug dalam versi 6.0.8, yang saat ini merupakan versi dalam repositori Ubuntu. Memperbarui ke versi 6.3.6 memperbaiki ini untuk saya.

Unduh di sini: http://dev.mysql.com/downloads/workbench/#downloads

3
Gleasonator

Satu hal yang tidak disebutkan dalam jawaban lain adalah pentingnya format OpenSSH untuk kunci sebagaimana dinyatakan pada SO ( https://stackoverflow.com/questions/34504232/mysql-workbench-fail-to-connect-via-ssh-due-to-key/38108623 # 3810862 ).

Meskipun ada jawaban di sana, saya dapat menggunakan kunci yang dilindungi kata sandi dengan MySQL Workbench 6.3.7 (64 bit, Windows 10).

2
Thomas

Masalah saya adalah karena saya mencoba menggunakan ed25519 Kunci SSH. Saya perhatikan kesalahan ini di server SSH di auth.log:

sshd[25251]: Connection closed by 192.168.x.x [preauth]

Setelah saya beralih menggunakan kunci RSA, semuanya bekerja seperti yang diharapkan.

2
jbiz

Anda mencoba terhubung ke server melalui ssh tetapi menggunakan port mysql. Port yang Anda inginkan adalah apa pun yang sedang didengarkan oleh server ssh Anda, biasanya 22, kemudian localhost dan 3306 untuk nama host dan port mysql.

1
Justin Buser

Saya menemukan kesalahan yang sama. Masalahnya adalah "agak" batas waktu. Saya memutar nilai bahkan hingga 120 detik yang tidak membantu.

Dalam kasus saya, saya bisa menyelesaikannya dengan melakukan nslookup myserver.com dan menggunakan alamat IP alih-alih nama host. Asumsi saya adalah masalah saat mencoba terhubung dari IPv4 ke IPv6.

1
Markus Zeller

Terkadang kunci yang dibuat oleh Putty tidak akan berfungsi. Gunakan ssh-keygen pada kotak Linux untuk membuat pasangan kunci. Salin konten baru id_rsa ke file teks pada Windows. Pastikan untuk menambahkan konten id_rsa.pub ke otor_keys di kotak Linux. Semua default lain di Workbench baik-baik saja termasuk 127.0.0.1 untuk Nama Host MySQL. Tentu saja harus Standar TCP/IP melalui SSH.

1
mcmacerson

Saya menghadapi masalah yang sama. Saya memeriksa dan mencoba mengatur AllowTcpForwarding Ya tetapi tidak ada di sshd_config saya jadi tidak ada bantuan. pastikan nama host ssh adalah [~ # ~] bukan [~ # ~] sama dengan nama host mysql (gunakan localhost).

Di meja kerja, pilih + untuk menambahkan koneksi baru dan atur yang berikut:

  • metode koneksi: standar TCP/IP over SSH
  • Nama Host SSH: 192.168.0.50:22 (tempatkan IP dan port server SSH jarak jauh (opsional))
  • Nama Pengguna SSH: sshuser
  • Anda dapat mengatur kata sandi atau menambahkan di Prompt
  • Nama Host MYSQL: localhost atau 127.0.0.1
  • Port MYSQL Server: 06
  • Anda dapat mengatur kata sandi atau menambahkan di Prompt

Tes koneksi. Itu harus berhasil kemudian tekan OK.Viola!

1
Reagan Ochora

Saya menemukan kesalahan yang sama. Kasus saya:

  • Ubuntu 18.04
  • meja kerja mysql 8.0.18
  • akses ssh tanpa kata sandi (hanya melalui kunci ssh publik/pribadi)

Saya memecahkan masalah ini setelah:

  1. hapus mysql-workbench-community (sebelumnya diinstal melalui situs web mysql):

    Sudo apt menghapus mysql-workbench-community -y

  2. install mysql-workbench

    Anda harus menginstal mysql-workbench -y

  3. tambahkan koneksi baru

  4. klik "Simpan di Gantungan Kunci" ntuk mysql (bukan untuk pengguna ssh) dan setel kata sandi
  5. klik "Uji koneksi"
  6. setelah kata sandi Prompt, biarkan input kosong dan centang "simpan kata sandi"
  7. klik "OK"
0
ktretyak

Lari

SELECT user,Host FROM mysql.user;

Dan pastikan bahwa pengguna yang Anda coba masuki melalui Workbench mengatakan localhost di kolom Host dan bukan %.

Jika tertulis %, perbaiki dengan:

UPDATE mysql.user SET Host="localhost" WHERE user="yourusername";

(Dengan anggapan bahwa Anda membuat pengguna ini untuk bekerja dengan Workbench over SSH, atau tentu saja, seperti di atas akan menghentikan pengguna dari login melalui TCP jarak jauh)

0
Nick

OK, saya tahu ini adalah pertanyaan lama, tapi saya mencabut rambut saya selama berjam-jam. Saya memeriksa semua yang disebutkan oleh Bruno dan Eye dan semuanya tampak bagus. Kemudian saya menyadari bahwa itu benar-benar kunci privat/publik. Jadi saya menyalakan Pageant dan menambahkan kunci pribadi saya, sehingga itu menciptakan kunci publik yang bisa dibaca oleh MySQL Workbench dan voila, terhubung! (Itu sebenarnya semacam antiklimaks ketika MySQL Workbench benar-benar mulai bekerja, tetapi dengan cara yang bahagia.)

TLDR: Gunakan Pageant untuk menghasilkan kunci publik dari kunci pribadi Anda.

0
Bonnie

Baru saja mengalami masalah yang sama pada mesin Ubuntu yang terhubung ke server yang menjalankan versi MySQL 5.5.29 dan MySQL Workbench 5.2.40. Server SSH membutuhkan penggunaan ssh-key.

Saya tidak dapat terhubung ke server MySQL menggunakan pengguna root, sebaliknya saya harus membuat pengguna non-root terpisah untuk digunakan untuk login. Setelah itu saya dapat terhubung dengan baik.

Semoga ini membantu.

0
Kyle Coots