Selama berbulan-bulan saya telah terhubung ke instance MySQL yang berjalan di server uji lokal kami melalui terowongan SSH tanpa masalah. Namun tiba-tiba, tanpa perubahan yang dapat saya pikirkan, server sudah mulai menolak upaya masuk dari Sequel Pro dengan kesalahan:
Tidak dapat terhubung ke host 127.0.0.1 karena akses ditolak.
Periksa ulang nama pengguna dan kata sandi Anda dan pastikan akses dari lokasi Anda saat ini diizinkan.
MySQL berkata: Akses ditolak untuk pengguna 'root' @ 'localhost' (menggunakan kata sandi: YES)
Saya dapat masuk dari terminal saat terhubung langsung ke server melalui SSH, hanya saja tidak melalui terowongan SSH. Masalahnya tidak spesifik untuk Sequel Pro atau hanya diri saya sendiri, saya mendapatkan kesalahan yang sama ketika menghubungkan melalui MySQL Workbench seperti yang dilakukan orang lain di kantor. Saya telah mengatur ulang kata sandi mysqladmin
hanya demi kewarasan, itu jelas bukan masalahnya.
Ketika saya mulai melihat lebih dalam, saya perhatikan bahwa kesalahan melaporkan server sebagai "localhost", bukannya "127.0.0.1" yang saya masukkan di Sequel Pro. Seorang teman menyarankan itu mungkin hanya penanganan kesalahan yang buruk, tetapi tampaknya aneh mengingat perbedaan yang signifikan antara localhost dan 127.0.0.1 di MySQL.
Dalam upaya untuk mengatasi masalah tunneling, saya memberikan akses ke root @%, sehingga saya dapat terhubung secara langsung. Ini berfungsi sebagian besar, saya bisa melihat data tabel, membuat database baru, dll. Satu-satunya masalah adalah ketika saya datang untuk membuat pengguna saya mendapatkan kesalahan:
Akses ditolak untuk 'root' @ '%' pengguna (menggunakan kata sandi: YES)
Anehnya pengguna sebenarnya dibuat, saya pikir itu hanya masalah dengan hibah. Sekali lagi, dari terminal saya bisa melakukan apa saja ketika login sebagai root.
Adakah yang bisa membantu menjelaskan mengapa koneksi terowongan dan (mungkin) perintah hibah menerima kesalahan akses ditolak?
Untuk referensi MySQ adalah versi 5.6.16 dengan sebagian besar pengaturan default, diinstal melalui Homebrew pada mesin MAC OS X Server.
Memperbarui
Inilah daftar host tempat root saat ini diberi akses:
mysql> select host,user from mysql.user where user='root';
+----------------+------+
| host | user |
+----------------+------+
| % | root |
| 127.0.0.1 | root |
| ::1 | root |
| localhost | root |
+----------------+------+
4 rows in set (0.00 sec)
Seperti yang saya pahami, baris pertama ("%") harus benar-benar membuat yang lain berlebihan?
Perbarui 2
Memperbaiki masalah hibah; root @% pengguna belum diberi semua hak istimewa dengan ekstra with grant option
di akhir, sehingga bisa melakukan segalanya kecuali memberikan. Masih ingin tahu mengapa terowongan SSH ditolak.
sumber
Jawaban:
Di MySQL,
localhost
kata kunci dicadangkan untuk koneksi menggunakan soket MySQL dan Anda harus menggunakan alamat ip127.0.0.1
untuk koneksi TCP ke port jaringan MySQL pada 127.0.0.1. Ini berarti bahwa kedua server harus memberikan hak istimewa kepada pengguna secara khusus127.0.0.1
, dan klien harus menggunakan-h 127.0.0.1
untuk melewati terowongan alih-alih menyambungkan ke soket lokal.Untuk memungkinkan Anda mengakses menggunakan penerusan port SSH Anda memerlukan sesuatu seperti:
dan kemudian jalankan
dan mungkin
Jika masih tidak berhasil, mulai ulang proses server.
Dalam pesan kesalahan 127.0.0.1 setelah lookup DNS terbalik diterjemahkan
localhost
membuat kesulitan debugging.Seperti yang dijelaskan dalam manual :
sumber
grant all on *.* to 'root'@'127.0.0.1' with grant option;
ssh -h 127.0.0.1 -u root -p
dari jarak jauh di server, koneksi juga ditolak.-h 127.0.0.1
koneksi yang gagal pada server dengan me-reboot mysql, tetapi ssh socket masih tidak berfungsiSaya telah melihat di masa lalu dengan ssh tunels, bahwa ada perbedaan antara Grant all to "localhost" dan grant all to "127.0.0.1" jadi coba berikan "127.0.0.1" sebagai gantinya atau sebagai tambahan dari hibah "localhost" Anda.
sumber
grant
pernyataan denganidentified by ..
untuk memastikan semua kata sandi root sama, tetapi tidak ada sukacita.Alih-alih menggunakan Sequel untuk membuat terowongan, apa yang Anda buat sendiri?
ssh -Cc blowfish -Nf -vv -L3306: localhost: 3306 sshuser @ domain
Kemudian terhubung dengan Sequel ke 127.0.0.1:3306 Bisakah Anda terhubung? Apakah ada yang muncul di terminal Anda (atau log klien ssh)?
sumber