0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

個人的備忘録:FlaskアプリでMySQL接続に失敗したときのログと解決記録をまとめてみた

Posted at

はじめに

FlaskアプリケーションからMySQLに接続しようとした際、「Host is not allowed to connect to this MySQL server」というエラーに直面することがあります。

このエラーは、MySQLのホスト制限によりアクセスがブロックされていることが原因です。

この備忘録では、実際に発生したエラーメッセージとその解決方法、そしてアプリケーション専用ユーザーの作成手順について記録しています。今後同様のエラーに遭遇した際、素早く対処できるようにまとめました。


接続エラーの原因と解決

mysql.connector.errors.DatabaseError: 1130: Host '192.168.1.5' is not allowed to connect to this MySQL server

このエラーメッセージのポイント:

MySQLサーバーがクライアント(この場合は 192.168.1.5)からの接続を拒否しています。
これは MySQLユーザーのホスト制限 により、指定のIPアドレスから接続する許可がされていないためです。

解決方法:

以下のようにして 特定のホストまたは全ホスト('%')からの接続を許可 する必要があります。

CREATE USER 'flaskuser'@'%' IDENTIFIED BY 'flaskpass';
GRANT ALL PRIVILEGES ON flask_db.* TO 'flaskuser'@'%';
FLUSH PRIVILEGES;

必要に応じて、@'192.168.1.5' のように、特定のIPからの接続だけを許可する設定も可能です。


アプリケーション専用ユーザー作成のベストプラクティス

MySQLのセキュリティを強化するには、rootユーザーを直接使わず、アプリケーション専用のユーザーを作成して接続するのが安全です。

ユーザー作成と権限付与

CREATE USER 'flaskuser'@'%' IDENTIFIED BY 'flaskpass';
GRANT ALL PRIVILEGES ON flask_db.* TO 'flaskuser'@'%';
FLUSH PRIVILEGES;

Flaskアプリ側の接続設定(app.py)

def get_db_connection():
    return mysql.connector.connect(
        host='192.168.1.11',
        user='flaskuser',
        password='flaskpass',
        database='flask_db'
    )

まとめ

このセットアッププロセスは、MySQLサーバーを本番運用に耐えうる状態へと近づける重要な手順です。特に匿名ユーザーの削除やテストDBの削除、パスワードの設定はセキュリティ強化に不可欠です。

また、アプリ専用ユーザーを作成して接続させることで、root権限の濫用を避けることができ、より安全な運用が実現できます。

今後は、これに加えてファイアウォールの設定やMySQLユーザー管理、外部アクセス制御なども含めて、より堅牢な構成を目指していきたいと思います!

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?