Pythonスクリプトを使用して、Webサーバー上の既存のMySQLデータベース(db名DB2639162)にデスクトップPCからテーブルを追加する手助けが必要です。私は次のスクリプト(create_db.py)を書いています:Pythonを使用してSSH経由でMySQLに接続
import MySQLdb
from sshtunnel import SSHTunnelForwarder
ssh_pwd=''
ssh_usr=''
mysql_pwd=''
mysql_usr=''
with SSHTunnelForwarder(('ssh.strato.de', 22),
ssh_password=ssh_pwd, ssh_username=ssh_usr,
remote_bind_address=('rdbms', 3306)) as server:
print 'Server connected via SSH!'
db1 = MySQLdb.connect(host='127.0.0.1',
port=server.local_bind_port,
user=mysql_usr,
passwd=mysql_pwd,
db='DB2639162')
cursor = db1.cursor()
sql = 'CREATE TABLE mydata'
cursor.execute(sql)
db1.close()
残念ながらスクリプトはうまくいかず、以下の出力が表示されます。明らかに、SSH接続は正常に確立できますが、データベースへのアクセスは失敗します。ターミナルコマンドがうまく機能してくれMySQLデータベースへのアクセスを許可するよう
Server connected via SSH!
2016-09-18 11:02:19,291| ERROR | Secsh channel 0 open FAILED: open failed: Administratively prohibited
2016-09-18 11:02:19,295| ERROR | Could not establish connection from ('127.0.0.1', 44017) to remote side of the tunnel
Traceback (most recent call last):
File "create_db.py", line 18, in <module>
db='DB2639162')
File "build/bdist.linux-x86_64/egg/MySQLdb/__init__.py", line 81, in Connect
File "build/bdist.linux-x86_64/egg/MySQLdb/connections.py", line 193, in __init__
_mysql_exceptions.OperationalError: (2013, "Lost connection to MySQL server at 'reading initial communication packet', system error: 0")
はまた、ユーザー名、パスワードは大丈夫です。
ssh [email protected]
mysql -h rdbms -u mysql_usr -p DB2639162
は答えがエラーメッセージに権利がある
これを解決できましたか? –