मेरे पास तीन सर्वर A , B , और C हैं , साथ ही मेरा लोकलहोस्ट है । प्रत्येक सर्वर एक उचित नेटवर्क के अंदर होता है, और सर्वर C को कुछ परीक्षण करने के लिए पोर्ट 3306 पर सर्वर A में mysql DB से जुड़ना चाहिए।
परिदृश्य इस प्रकार है:
- सर्वर में सी मैं चलाने के
PHP
एक खोलने के लिए स्क्रिप्टmysql connection
को बी (जो एक नहीं है mysql सर्वर ) - मैं लोकलहोस्ट से लेकर सर्वर B तक ssh कर सकता हूं
- मैं लोकलहोस्ट से सर्वर A तक ssh कर सकता हूं
सर्वर A में mysql सर्वर (स्पष्ट रूप से) है, लेकिन सर्वर B में mysql सर्वर नहीं है।
मैंने निम्नलिखित विधि आज़माई है:
मानचित्र दूरस्थ B: 3306 से लोकलहोस्ट: 3337 , का उपयोग करते हुए:
ssh -R 3306:localhost:3337 b-user@B-server
मानचित्र लोकलहोस्ट: 3337 से ए: 3306 , का उपयोग करते हुए:
ssh -L 3337:localhost:3306 a-user@A-server`
B से कनेक्शन खोलने के लिए टेस्ट php स्क्रिप्ट:
$host= '<B-server>'; $pwd = '<mysql-pwd>'; $user= '<mysql-user>'; $db = "my_test_db"; try { $pdo = new PDO("mysql:host={$host};dbname={$db};port=3306", $user, $pwd); } catch (PDOException $e) { print "Error!: " . $e->getMessage() . "<br/>"; die(); }
जब मैं उपरोक्त php स्क्रिप्ट चलाता हूं, तो मुझे त्रुटि मिली है:
Error!: SQLSTATE[HY000] [2002] Connection refused
पोर्ट usages में कुछ गड़बड़ है?
अपडेट करें
सर्वर B में मैंने इंस्टॉल किया है mysql-client
, और फिर सर्वर A से कनेक्शन का परीक्षण अच्छी तरह से हो जाता है:
mysql -u <sql-user> -p<sql-pass> --host 127.0.0.1 -P 3306
दरअसल लोकलहोस्ट के माध्यम से ए और बी के बीच संचार काम कर रहा है।