जब आप mysql
चलाते हैं कमांड, आप इसे SSH शेल में कर रहे हैं। यानी आप रिमोट मशीन पर चल रहे सर्वर से localhost
. के जरिए कनेक्ट हो रहे हैं कनेक्शन। ऐसा लगता है कि रिमोट सर्वर को रिमोट कनेक्शन की अनुमति देने के लिए सेट अप नहीं किया गया है, केवल मशीन से ही कनेक्शन।
एसएसएच के माध्यम से आपको अपनी पायथन स्क्रिप्ट को उसी तरह MySQL सर्वर से कनेक्ट करने की आवश्यकता होगी। आप रिमोट सर्वर पर 3306 पोर्ट करने के लिए एक एसएसएच सुरंग खोल सकते हैं।
इस उद्देश्य के लिए मैं जिस मॉड्यूल का उपयोग करना चाहता हूं वह है:https://pypi.python.org/pypi/ sshtunnel
from sshtunnel import SSHTunnelForwarder
import pymysql
server = SSHTunnelForwarder(
'XXX.XXX.XXX.XXX',
ssh_username='root',
ssh_password='my_server_password',
remote_bind_address=('127.0.0.1', 3306)
)
server.start()
cnx = pymysql.connect(
host='127.0.0.1',
port=server.local_bind_port,
user='root',
password='my_database_password',
db='my_database'
)
# Make sure to call server.stop() when you want to disconnect
# after calling cnx.close()