質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

SSH

SSH(Secure Shell)は、セキュアチャネルを通してデータを交換するためのネットワークプロトコルです。リモートサーバーへのコマンド実行やファイル転送を行う時に一般的に使用されます。

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

0回答

1024閲覧

MySQL への接続がうまく行かない

rjberger19

総合スコア33

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

SSH

SSH(Secure Shell)は、セキュアチャネルを通してデータを交換するためのネットワークプロトコルです。リモートサーバーへのコマンド実行やファイル転送を行う時に一般的に使用されます。

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2020/09/26 10:31

以下の環境です。
・PythonファイルはMacbook Air mid 2013
・MySQLサーバはGCE f1-micro上

Python

1import mysql.connector 2from sshtunnel import SSHTunnelForwarder 3 4SSH_BASTION_ADDRESS = HOST # ここに踏み台のGCEのIPアドレスを入れる 5SSH_PORT = PORT 6SSH_USER = USER 7SSH_PKEY_PATH = KEY_FILE 8MYSQL_HOST = HOST # ここにGCEのアドレスを書く 9MYSQL_PORT = 3306 10MYSQL_USER = USER 11MYSQL_PASS = PASSPHRASE 12MYSQL_DB = DBNAME 13 14 15if __name__ == '__main__': 16 with SSHTunnelForwarder( 17 (SSH_BASTION_ADDRESS, SSH_PORT), 18 ssh_pkey=SSH_PKEY_PATH, 19 ssh_username=SSH_USER, 20 ssh_password=PASSPHRASE, 21 remote_bind_address=(MYSQL_HOST, MYSQL_PORT), 22 local_bind_address=('localhost', MYSQL_PORT) 23 ): 24 connection = mysql.connector.connect( 25 host='localhost', 26 port=MYSQL_PORT, 27 user=MYSQL_USER, 28 passwd=MYSQL_PASS, 29 db=MYSQL_DB 30 # charset='utf8' 31 ) 32 pass # 何かクエリを叩いたりする 33 connection.close()

このように記載してGCE上のMySQLへ接続を試みています。

connection = mysql.connector.connect(

こちらの部分には入るので、SSH接続はうまく行っているようで、
MySQL に使っているポート番号なども確認しましたが3306で特に誤りはありませんでした。

db=MYSQL_DB

こちらの部分で実行したらほぼ同時に必ず以下のエラーが出ます。

2013: Lost connection to MySQL server during query

そこで、MySQL 側のタイムアウト設定などを見てみましたが、エラーが発生するまでに時間はほぼかかっていないため時間が原因でも無いと思います。

MySQL

1 2mysql> show variables like '%timeout%'; 3+-----------------------------+----------+ 4| Variable_name | Value | 5+-----------------------------+----------+ 6| connect_timeout | 10 | 7| delayed_insert_timeout | 300 | 8| have_statement_timeout | YES | 9| innodb_flush_log_at_timeout | 1 | 10| innodb_lock_wait_timeout | 50 | 11| innodb_rollback_on_timeout | OFF | 12| interactive_timeout | 28800 | 13| lock_wait_timeout | 31536000 | 14| net_read_timeout | 30 | 15| net_write_timeout | 60 | 16| rpl_stop_slave_timeout | 31536000 | 17| slave_net_timeout | 60 | 18| wait_timeout | 28800 | 19+-----------------------------+----------+

何が原因かわかる方、お知恵をお貸し頂けないでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問