PythonでMySQLに外部接続する方法|Ubuntu 22対応ガイド

MySQL

MySQLは多くのシステムやアプリケーションで使用されるデータベースです。この記事では、Pythonを使用してMySQL Ver 8.0.4 に外部から接続する方法を解説します。特に、Ubuntu 22における環境での設定手順をわかりやすく説明します!

MySQL外部接続の設定

Ubuntu 22でMySQLに外部接続を許可するには、以下の手順を実行します。

1 MySQLユーザーに外部接続を許可する

以下のコマンドを使用して、MySQLユーザーにすべてのIPアドレスからの接続を許可します。

GRANT ALL PRIVILEGES ON *.* TO 'username'@'%' IDENTIFIED BY 'password';
FLUSH PRIVILEGES;
  • username: 接続するユーザー名
  • password: 設定するパスワード

2 MySQL設定ファイルの編集

MySQLの設定ファイルを開き、外部接続を許可します。

sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf

以下の行を見つけ、修正してください:

bind-address = 0.0.0.0
  • 0.0.0.0 に設定すると、すべてのIPアドレスからの接続を許可します。

3 ファイアウォールの設定

ポート3306を開放します:

sudo ufw allow 3306/tcp
sudo ufw reload

4 MySQLサービスの再起動

設定を反映させるために、MySQLを再起動します。

sudo systemctl restart mysql

必要なPythonライブラリのインストール

MySQLにPythonから接続するために、mysql-connector-pythonライブラリをインストールします。

pip install mysql-connector-python

PythonでMySQLに接続するサンプルコード

以下のコードを実行することで、MySQLに外部から接続できます。

import mysql.connector
from mysql.connector import Error

def connect_to_mysql(host, user, password, database, port):
  """通常はPort番号はなくても問題ないので必要に応じて削除して使用してください"""
    try:
        # MySQLデータベースに接続
        connection = mysql.connector.connect(
            host=host,           # MySQLサーバーのIPアドレスまたはホスト名
            user=user,           # ユーザー名
            password=password,   # パスワード
            database=database,   # 接続するデータベース名
            port=port            # 必要に応じてポート番号
        )

        if connection.is_connected():
            print("MySQLデータベースに接続しました")
            db_info = connection.get_server_info()
            print(f"MySQLサーバーバージョン: {db_info}")
            
            # クエリを実行
            cursor = connection.cursor()
            cursor.execute("SELECT DATABASE();")
            record = cursor.fetchone()
            print(f"現在のデータベース: {record}")

    except Error as e:
        print(f"エラーが発生しました: {e}")
    finally:
        if connection.is_connected():
            cursor.close()
            connection.close()
            print("MySQL接続が閉じられました")

# 使用例
connect_to_mysql(
    host="192.168.1.100",  # MySQLサーバーのIPアドレス
    user="username",       # MySQLユーザー名
    password="password",   # ユーザーパスワード
    database="testdb",     # 使用するデータベース名
    port=[PortNumber]      # デフォルトポート(必要に応じて)
)

注意点とセキュリティ対策

  1. パスワードの管理
    環境変数や安全なストレージに保存しましょう。
  2. IP制限
    必要なIPアドレスだけ接続を許可する設定にしましょう。
  3. SSL/TLSの使用
    外部接続にはSSL/TLSを使用して通信を暗号化します。

まとめ

Ubuntu 22環境でのMySQL Ver 8.0 にPythonから外部接続する方法を解説しました。環境の設定からコード例まで、この記事を参考に効率的なデータベース操作を行いましょう!

このサイトを稼働しているVPSはこちら

コメント

タイトルとURLをコピーしました