Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

PHP में SSH पर एक MySQL सर्वर से कनेक्ट करें

SSH टनल सॉल्यूशन

अपने MySQL डेटाबेस सर्वर (सुरक्षा के लिए एक जम्पबॉक्स प्रॉक्सी के माध्यम से) के लिए एक SSH सुरंग सेट करें।


(A) GUI टूल

अपनी आवश्यकताओं के आधार पर, आप अंतर्निहित SSH टनलिंग समर्थन जैसे विजुअल स्टूडियो कोड के साथ GUI MySQL क्लाइंट का उपयोग कर सकते हैं पोर्ट अग्रेषित करना / SSH टनल बनाना ए> , TablePlus या PuTTY का उपयोग करें सेट अप करने के लिए स्थानीय पोर्ट अग्रेषण।

macOS पर, मुझे सिक्योर पाइप्स पसंद है। या TablePlus


(B) कमांड लाइन

चरण 1.

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

यहाँ कुंजी है '-L' स्विच जो एसएसएच को बताता है कि हम स्थानीय . का अनुरोध कर रहे हैं पोर्ट अग्रेषण।

मैंने पोर्ट का उपयोग करना चुना है 3307 ऊपर। मेरे स्थानीय . पर समस्त ट्रैफ़िक इस पोर्ट को निर्देशित मशीन अब मेरे ssh क्लाइंट . के माध्यम से 'पोर्ट-फ़ॉरवर्ड' की जाएगी ssh सर्वर . के लिए पते पर होस्ट पर चल रहा है ssh-jumpbox.com

जम्पबॉक्स ssh प्रॉक्सी सर्वर ट्रैफ़िक को डिक्रिप्ट करेगा और आपकी ओर से आपके MySQL डेटाबेस सर्वर से एक नेटवर्क कनेक्शन स्थापित करेगा, 10.3.1.55:3306 , इस मामले में। MySQL डेटाबेस सर्वर आपके जंपबॉक्स के आंतरिक नेटवर्क पते से आने वाले कनेक्शन को देखता है।


स्थानीय पोर्ट अग्रेषण सिंटैक्स
वाक्यविन्यास थोड़ा मुश्किल है लेकिन इसे इस रूप में देखा जा सकता है:

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

यदि आप अन्य स्विच में रुचि रखते हैं, तो वे हैं:

-f (पृष्ठभूमि पर जाएं)
-N (दूरस्थ कमांड निष्पादित न करें)
-g (दूरस्थ होस्ट को स्थानीय अग्रेषित पोर्ट से कनेक्ट करने की अनुमति दें)

निजी कुंजी प्रमाणीकरण, जोड़ें (-i) ऊपर स्विच करें:

<ब्लॉकक्वॉट>

-i /path/to/private-key

चरण 2.

अपने स्थानीय MySQL क्लाइंट को अपनी मशीन (-h 127.0.0.1) पर स्थानीय पोर्ट 3307 के माध्यम से अपनी SSH सुरंग के माध्यम से कनेक्ट करने के लिए कहें, जो अब चरण 1 में आपके द्वारा स्थापित SSH सुरंग के माध्यम से इसे भेजे गए सभी ट्रैफ़िक को अग्रेषित करता है।

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

क्लाइंट और सर्वर के बीच डेटा एक्सचेंज अब एन्क्रिप्टेड एसएसएच कनेक्शन पर भेजा जाता है और सुरक्षित है।


सुरक्षा नोट
सीधे अपने डेटाबेस सर्वर पर न जाएं। एक डेटाबेस सर्वर का इंटरनेट से सीधे पहुंच में होना एक बहुत बड़ी सुरक्षा देयता है। सुरंग लक्ष्य पते को अपने जंपबॉक्स/बैशन होस्ट का इंटरनेट पता बनाएं (चरण 1 में उदाहरण देखें) और आपका डेटाबेस आंतरिक को लक्षित करता है दूरस्थ नेटवर्क पर आपके डेटाबेस सर्वर का IP पता। बाकी काम SSH करेगा।


चरण 3.

अब अपने PHP एप्लिकेशन को इसके साथ कनेक्ट करें:

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

श्रेय क्रिस स्नाइडर को बढ़िया लेख MySQL कनेक्टिविटी के लिए ssh कमांड लाइन टनलिंग का विवरण देना।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL में REGEXP_LIKE () फ़ंक्शन कैसे काम करता है

  2. कैसे ठीक करें:jdbc के लिए कोई उपयुक्त ड्राइवर नहीं मिला:mysql:// localhost/dbname पूल का उपयोग करते समय त्रुटि?

  3. मैं MySQL में एक पंक्ति जनरेटर कैसे बनाऊं?

  4. mysql में वैश्विक sql_mode सेट करना

  5. SQLite और कस्टम ऑर्डर द्वारा