Bagaimana saya bisa menentukan metode koneksi yang digunakan oleh klien MySQL?

10

Saat menggunakan klien MySQL (mis. mysql) Bagaimana saya bisa menentukan apakah itu terhubung ke server menggunakan file soket Unix atau dengan menggunakan TCP / IP?

Eugene Yarmash
sumber

Jawaban:

13

Menemukan transportasi

Coba gunakan netstat -ln | grep 'mysql'dan Anda dapat melihat bagaimana itu terhubung oleh output. jika Anda memiliki akses ke shell

Di Unix, program MySQL memperlakukan nama host localhost secara khusus, dengan cara yang mungkin berbeda dari apa yang Anda harapkan dibandingkan dengan program berbasis jaringan lainnya. Untuk koneksi ke localhost, program MySQL mencoba untuk terhubung ke server lokal dengan menggunakan file soket Unix.

Ini terjadi bahkan jika opsi --portatau -Pdiberikan untuk menentukan nomor port.

Jika Anda ingin mengetahui jenis koneksi dari dalam mysql CLI, gunakan perintah '\ s' (status).

mysql> \s

Output akan memiliki garis seperti berikut ini (pada Unix).

Connection:             127.0.0.1 via TCP/IP

atau

Connection:             Localhost via UNIX socket

Memaksa transportasi tertentu

Untuk memastikan bahwa klien membuat koneksi TCP / IP ke server lokal, gunakan --hostatau -huntuk menentukan nilai nama host 127.0.0.1, atau alamat IP atau nama server lokal. Anda juga dapat menentukan protokol koneksi secara eksplisit, bahkan untuk localhost, dengan menggunakan --protocol=TCPopsi. Sebagai contoh:

shell> mysql --host=127.0.0.1
shell> mysql --protocol=TCP

The --protocol={TCP|SOCKET|PIPE|MEMORY}pilihan secara eksplisit menentukan protokol yang digunakan untuk menghubungkan ke server. Ini berguna ketika parameter koneksi lain biasanya akan menyebabkan protokol digunakan selain yang Anda inginkan. Misalnya, koneksi di Unix ke localhost dibuat menggunakan file soket Unix secara default:

shell> mysql --host=localhost

Untuk memaksa koneksi TCP / IP digunakan sebagai gantinya, tentukan --protocolopsi:

shell> mysql --host=localhost --protocol=TCP

Jenis protokol:

  • TCP: Koneksi TCP / IP ke server lokal atau jauh. Tersedia di semua platform.
  • SOCKET: Unix koneksi file socket ke server lokal. Hanya tersedia di unix.
  • PIPE: Koneksi pipa bernama ke server lokal atau jauh. Hanya tersedia di windows.
  • MEMORY: Koneksi memori bersama ke server lokal. Hanya tersedia di windows.

Sambungan file soket Unix lebih cepat dari TCP / IP, tetapi hanya dapat digunakan saat menyambung ke server di komputer yang sama.

harish.venkat
sumber
@Anil: terima kasih, Anda menjadikannya jawaban yang bagus.
Eugene Yarmash