私は mysql の mysql-connector-python
ライブラリを使用して、ローカルネットワーク内の他のデバイスの MariaDB
データベースに接続しようとしましたが、失敗しました。しかも、エラーメッセージを何も出力せずに直接終了しました。
問題の説明
ソフトウェアバージョン:
-
MariaDB server 10.11.6
-
mysql-connector-python 9.2.0
-
MariaDB server、IP は 192.168.1.60
-
クライアント、IP は 192.168.1.35
Python コードは以下の通りです:
import mysql.connector
import logging
# ログ記録の設定
logging.basicConfig(level=logging.DEBUG, format='%(asctime)s - %(levelname)s - %(message)s')
try:
logging.info("データベースに接続中...")
connection = mysql.connector.connect(
host="192.168.1.60",
port=3306,
user="mysql",
password="xxx")
logging.info("接続が確立されました。")
# SQL クエリを実行するためのカーソルオブジェクトを作成します
cursor = connection.cursor()
# すべてのデータベースを取得します
logging.info("SHOW DATABASES クエリを実行中...")
cursor.execute("SHOW DATABASES")
# すべてのデータベースと各データベースのテーブル名をプリントします
for (database,) in cursor.fetchall():
logging.info(f"データベース: {database}")
# 現在のデータベースに切り替えます
cursor.execute(f"USE {database}")
# 現在のデータベース内のすべてのテーブルを取得してプリントします
cursor.execute("SHOW TABLES")
for (table,) in cursor.fetchall():
logging.info(f" テーブル: {table}")
# カーソルと接続を閉じます
cursor.close()
connection.close()
logging.info("接続が閉じられました。")
except mysql.connector.Error as err:
logging.error(f"エラー: {err}")
except Exception as e:
logging.error(f"予期しないエラー: {e}")
このコードを実行すると、エラーメッセージを何も出力せずに直接終了します。
MariaDB
サーバー側のサービス記録を確認すると、以下のエラーメッセージが表示されます。
mariadbd: [Warning] Aborted connection 48 to db: 'unconnected' user: 'unauthenticated' host: '192.168.1.35' (This connection closed normally without authentication)
問題解決の試み
MariaDB
サーバー側で接続要求を受信できるため、両方のデバイスのファイアウォール構成は正常です。
ログインユーザーの権限を確認しましたが、正常でした。
多くの資料を調べて、さまざまな方法を試しましたが、どうしてもこの問題を解決できませんでした。
最後に、別の Python ライブラリ pymysql
(バージョン:1.1.1)を使用して MariaDB
サーバーに接続を試みました。コードは以下の通りです:
import pymysql
# MariaDB サーバーに接続します
conn = pymysql.connect(
host="192.168.1.60",
port=3306,
user="mysql",
password="xxx"
)
cursor = conn.cursor()
cursor.execute("SELECT VERSION()")
print("MariaDB version:", cursor.fetchone()[0])
cursor.close()
conn.close()
エラーは発生せず、正常に接続して MariaDB のバージョンをプリントできました。
しかし、以前に接続できなかった原因はまだわかりません。
本ウェブページの他のバージョン
この記事には複数の言語のバージョンがあります。
コメントを投稿したい場合は、以下のウェブページにアクセスしてください。
これらのウェブページは閲覧のみをサポートしており、コメントやメッセージを投稿することはできませんが、より多くの言語オプションを提供し、読み込み時間が短縮されています。
ZH EN ZH-TW JA RU KO CS ES AR FR PT DE TR IT NL SV DA FI PL UK HE RO HU EL HR TH HI BN ID SW VI NO
この記事は、AI によって Chinese (Simplified) から Japanese に翻訳されました。