Armadilloフォーラム

MySQLサーバの接続エラーについて

amimoto-330

2022年8月16日 14時47分

お世話になります。

コンテナの中にデータベースを参照するスクリプトをPython言語で作成して実行させているのですが、
サーバにアクセスできないエラー(添付ファイル)が表示されてしまいます。
データベースはG4とLAN接続されたWindows PCにあるMySQLを使用しています。
(Python3.9を使用し、mysql-connector-pythonライブラリをインストール済)

エラーの原因としては、IPアドレス、ポート番号やテーブル名が間違っている可能性はありますが、
その他に考えられる原因があれば教えて頂けないでしょうか?

以前同じ設定でarmadillo-640を使って実施した時は、問題無くアクセスできた記憶があります。

以上、よろしくお願いします。

ファイル ファイルの説明
mysql_connector_error.png エラー発生時のログ
コメント

at_dominique.m…

2022年8月16日 15時09分

amimoto-330さん

お世話になっています、
アットマークテクノのマルティネです。

> コンテナの中にデータベースを参照するスクリプトをPython言語で作成して実行させているのですが、
> サーバにアクセスできないエラー(添付ファイル)が表示されてしまいます。
> データベースはG4とLAN接続されたWindows PCにあるMySQLを使用しています。
> (Python3.9を使用し、mysql-connector-pythonライブラリをインストール済)
>
> エラーの原因としては、IPアドレス、ポート番号やテーブル名が間違っている可能性はありますが、
> その他に考えられる原因があれば教えて頂けないでしょうか?

コンテナのデフォルトネットワークは Armadillo によって NAT されてますが、外に接続するに関しては制限がありません。

Windows の方に firewall が追加されたか、サーバーが localhost のみに bind/listen された場合に接続できませんので、そのあたりの設定も確認してみてください。

後、添付していただいたイメージではログが読みづらいですので、ファイルを使って最後まで読めるようにするか、
例えばコンテナに「ncat」のパッケージをインストールして、「ncat -v 3306」で接続確認してみてください。

よろしくお願いします。

マルティネ様

ご回答ありがとうございます。
ご指示頂いた通り、Windowsの設定に問題があるかも知れませんので、もう少し調査してみます。

また、コンテナにncatをインストールしましたが、ncatを実行すると「command not found」となってしまいます。
恐らく手順を間違えていると思うので、申し訳ありませんがインストール方法を教えて頂けないでしょうか?

以上、よろしくお願いします。

at_dominique.m…

2022年8月16日 17時18分

amimoto-330さん、

> ご指示頂いた通り、Windowsの設定に問題があるかも知れませんので、もう少し調査してみます。

お願いします。

> また、コンテナにncatをインストールしましたが、ncatを実行すると「command not found」となってしまいます。
> 恐らく手順を間違えていると思うので、申し訳ありませんがインストール方法を教えて頂けないでしょうか?

すみません、コンテナが debian ベースだと思って確認しませんでしたが、何をコンテナとして使ってますか?
debian の場合では ncat のパッケージに /usr/bin/ncat のコマンドが入っていますので、 command not found になっていたら日本語のスペースが混ぜられたか PATH に /usr/bin が入ってない等のいくつかの可能性もありますが、コンテナの外でも使えます。

私のパソコンに mysql を起動させていませんが、ポート 80 で http サーバーの確認を以下のように取れます。(apk コマンドでインストールされたパッケージはメモリ上にだけインストールされますので、再起動したら再びインストールしてください。)

armadillo:~# apk add nmap-ncat
(1/2) Installing lua5.3-libs (5.3.6-r3)
(2/2) Installing nmap-ncat (7.92-r2)
Executing busybox-1.35.0-r17.trigger
OK: 217 MiB in 224 packages
 
armadillo:~# ncat -w 1 -v 192.168.1.42 3306
Ncat: Version 7.92 ( https://nmap.org/ncat )
Ncat: TIMEOUT.
 
armadillo:~# ncat -w 1 -v 192.168.1.42 80
Ncat: Version 7.92 ( https://nmap.org/ncat )
Ncat: Connected to 192.168.1.42:80.
# ここで ctrl + d で停止させます
Ncat: 0 bytes sent, 0 bytes received in 5.67 seconds.

よろしくお願いします。

マルティネ様

ご連絡ありがとうございます。

> すみません、コンテナが debian ベースだと思って確認しませんでしたが、何をコンテナとして使ってますか?
コンテナはdebianベースを使っています。
armadillo:~# podman ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS S
32ee41a7ae93 docker.io/library/debian:bullseye /bin/bash 3 weeks ago Exited (127)e
armadillo:~#

コンテナの外でapkコマンドを使いncatをインストールし、「ncat -w 1 ・・・」を実行すると、TIMEOUTになりますが実行できました。
しかし、相変わらずコンテナ内だと、command not foundになってしまいます。
コンテナの作成に失敗している可能性があるので、もう一度コンテナを再作成して試してみます。

本題のMySQLサーバに接続できないのは、Windows PCに問題がありそうなので、引き続き調査してみます。
ありがとうございました。