私は mysql のmysql-connector-python
ライブラリを使用して、ローカルネットワーク内の他のデバイスのMariaDB
データベースに接続しようとしましたが、失敗しました。そして、直接終了し、エラーメッセージは出力されませんでした。
問題の説明#
ソフトウェアバージョン:
-
MariaDB サーバー 10.11.6
-
mysql-connector-python 9.2.0
-
MariaDB サーバー、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' (この接続は認証なしで正常に閉じられました)
問題解決の試み#
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のバージョン:", 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