Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Terhubung ke server MySQL melalui SSH di PHP

Solusi Terowongan SSH

Siapkan terowongan SSH ke server database MySQL Anda (melalui proxy Jumpbox untuk keamanan).


(A) Alat GUI

Bergantung pada kebutuhan Anda, Anda dapat menggunakan klien MySQL GUI dengan dukungan SSH Tunneling bawaan seperti Visual Studio Code Meneruskan port / membuat terowongan SSH , TablePlus atau gunakan PuTTY untuk menyiapkan lokal penerusan port.

Di macOS, saya suka Secure Pipes atau TablePlus .


(B) Baris Perintah

Langkah 1.

ssh -fNg -L 3307:10.3.1.55:3306 [email protected] 

Kuncinya di sini adalah '-L' switch yang memberi tahu ssh bahwa kami meminta lokal penerusan port.

Saya telah memilih untuk menggunakan port 3307 di atas. Semua lalu lintas di lokal saya mesin yang diarahkan ke port ini sekarang akan 'port-forwarded' melalui klien ssh saya ke server ssh berjalan pada host di alamat ssh-jumpbox.com .

Server proxy ssh Jumpbox akan mendekripsi lalu lintas dan membuat koneksi jaringan ke server database MySQL Anda atas nama Anda, 10.3.1.55:3306 , pada kasus ini. Server database MySQL melihat koneksi yang masuk dari alamat jaringan internal Jumpbox Anda.


Sintaks Penerusan Port Lokal
Sintaksnya sedikit rumit tetapi dapat dilihat sebagai:

<local_workstation_port>:<database_server_addr_remote_end_of_tunnel>:<database_server_port_remote_end> [email protected]_proxy_host.com

Jika Anda tertarik dengan sakelar lainnya, mereka adalah:

-f (pergi ke latar belakang)
-N (jangan jalankan perintah jarak jauh)
-g (izinkan host jarak jauh terhubung ke port penerusan lokal)

Otentikasi Kunci Pribadi, tambahkan (-i) alihkan ke atas:

-i /path/to/private-key

Langkah 2.

Beri tahu klien MySQL lokal Anda untuk terhubung melalui terowongan SSH Anda melalui port lokal 3307 di mesin Anda (-h 127.0.0.1) yang sekarang meneruskan semua lalu lintas yang dikirim ke sana melalui terowongan SSH yang Anda buat pada langkah 1.

mysql -h 127.0.0.1 -P 3307 -u dbuser -p passphrase

Pertukaran data antara klien dan server sekarang dikirim melalui koneksi SSH terenkripsi dan aman.


Catatan keamanan
Jangan melakukan tunnel langsung ke server database Anda. Memiliki server database yang dapat diakses langsung dari internet adalah tanggung jawab keamanan yang sangat besar. Jadikan alamat target tunnel sebagai alamat internet Jumpbox/Bastion Host Anda (lihat contoh di langkah 1) dan database Anda menargetkan internal Alamat IP server database Anda di jaringan jarak jauh. SSH akan melakukan sisanya.


Langkah 3.

Sekarang hubungkan aplikasi PHP Anda dengan:

<?php
      $smysql = mysql_connect( "127.0.0.1:3307", "dbuser", "passphrase" );
      mysql_select_db( "db", $smysql ); 
?>

Penghargaan untuk Chris Snyder's artikel yang bagus merinci tunneling baris perintah ssh untuk konektivitas MySQL.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Apa tipe data yang ideal untuk digunakan saat menyimpan garis lintang/bujur dalam database MySQL?

  2. MySQL GABUNG dengan LIMIT 1 di tabel yang digabungkan

  3. Cara Memperbarui Tampilan di MySQL

  4. MySQL TAMBAHKAN KOLOM

  5. Tabel pembaruan MySQL berdasarkan nilai tabel lain