mysql
を実行するとき コマンドでは、SSHシェルでこれを実行しています。つまり、localhost
を介してリモートマシンで実行されているサーバーに接続しているということです。 繋がり。そのリモートサーバーは、リモート接続を許可するように設定されていないようです。マシン自体からの接続のみを許可します。
SSHを介して、PythonスクリプトをMySQLサーバーに接続するのと同じ方法で接続する必要があります。リモートサーバーのポート3306へのSSHトンネルを開くことができます。
この目的で使用したいモジュールは次のとおりです。
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()