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

phpseclib लाइब्रेरी का उपयोग करके mysql डेटाबेस से कनेक्ट करें

सबसे पहले, क्या उस उपयोगकर्ता के लिए MySQL पर रिमोट एक्सेस की अनुमति देना बेहतर नहीं होगा? हालांकि, मैं आपके कारणों को नहीं जानता।

सबसे आम एक पारदर्शी तरीका एक एसएसएच सुरंग बनाना होगा। यह दो अलग-अलग तरीकों से किया जा सकता है। यदि mysql मशीन पर mysql पोर्ट (3306) खुला नहीं है, तो आपको एक रिवर्स ssh टनल की आवश्यकता होगी जिसे रिमोट मशीन द्वारा खोला जाना है। mysql मशीन में लॉग इन करें और निम्न कमांड जारी करें:

ssh -R 12345:localhost:3306 [email protected]_machine -N

यदि रिमोट मशीन पर mysql पोर्ट खुला है तो सुरंग को php मशीन द्वारा खोला जा सकता है:

ssh -f [email protected]_machine -L 12345:mysql_machine:3306 -N

चाहे जिस तरह से सुरंगें बनाई गई हों, PHP एप्लिकेशन अब केवल पीडीओ का उपयोग कर सकता है और लोकलहोस्ट पोर्ट 12345 से जुड़ सकता है।

$pdo = new PDO('mysql:host=localhost;port=12345;dbname=test', $user, $password);

सुरंग के माध्यम से सारा ट्रैफ़िक गुप्त हो जाएगा।

यदि आप केवल कुछ सरल आदेश जारी करना चाहते हैं तो आप निम्न विकल्प का उपयोग कर सकते हैं।

सबसे आसान लेकिन असुरक्षित निम्न आदेश का उपयोग करने का तरीका होगा:

echo $ssh->exec('mysql -uUSER -pPASSWORD DATABASE -e "SQL COMMAND"');

यह असुरक्षित है क्योंकि सिस्टम के अन्य उपयोगकर्ता पासवर्ड देख सकते हैं।

आप expect . का उपयोग करके सुरक्षा समस्या का समाधान कर सकते हैं . expect एक प्रोग्राम है जो अधिक सुरक्षित तरीके से mysql को पासवर्ड पास कर सकता है। सुनिश्चित करें कि expect रिमोट सिस्टम पर स्थापित है। यहां SHOW TABLES का उपयोग करके एक उदाहरण दिया गया है डेटाबेस पर कमांड test :

include('Net/SSH2.php');

$ssh = new Net_SSH2('192.xxx.xxx.xxx');
if (!$ssh->login('ssh_user', 'ssh_password')) {
exit('Login Failed');
}

echo $ssh->exec('expect <<EOF
# disable command output
log_user 0
# start the mysqldump process
spawn mysql -uTHE_USER -p test -e "SHOW TABLES"
# wait for the password prompt
expect "password:"
# send the password (mind the \r)
send "THE_PASSWORD\r"
# enable output again
log_user 1
# echo all outout until the end
expect eof
EOF
');

आगे क्या हो रहा है, इसे समझने के लिए, मैंने हाल ही में अपना ब्लॉग आलेख उसके बारे में।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. jQuery स्वत:पूर्ण MySQL PHP

  2. पायथन मुद्दा:vcvarsall.bat को खोजने में असमर्थ

  3. मैं MySQL डीबी को पिंग कैसे करूं और पीडीओ का उपयोग करके फिर से कनेक्ट करूं?

  4. चेंज पर उपश्रेणी का चयन करें बॉक्स बनाएं

  5. MySQL कॉलम जोड़ें