flask-mod_wsgiを使用した落ち着きのないMySQLサーバーに接続できません
-
21-12-2019 - |
質問
私はmod_wsgiを使ってapacheでflask-restlessアプリを実行しようとしています。これは開発サーバーで正常に動作します。私は見つけることができるすべてを読んだことがあり、私が見た答えのどれも私のために働くようではありません。アプリは非データベース要求を適切に処理しますが、データベースアクセスを必要とするurlにアクセスしようとすると、次のエラーが発生します:
OperationalError: (OperationalError) (2003, "Can't connect to MySQL server on 'localhost' ([Errno 13] Permission denied)") None None
私は基本的にフラスコ落ち着きのないクイックスタートにダウンwhittledている私の config
私のflask-sqlalchemyモデルがインポートされました(from flask import models
).これが私のpythonコードです:
import flask
import flask.ext.sqlalchemy
import flask.ext.restless
import sys
sys.path.insert(0, '/proper/path/to/application')
application = flask.Flask(__name__, static_url_path = "")
application.debug=True
application.config.from_object('config')
db = flask.ext.sqlalchemy.SQLAlchemy(application)
from app import models
# Create the Flask-Restless API manager.
manager = flask.ext.restless.APIManager(application, flask_sqlalchemy_db=db)
# Create API endpoints, which will be available at /api/<tablename> by
# default. Allowed HTTP methods can be specified as well.
manager.create_api(models.Asset, methods=['GET'])
# start the flask loop
if __name__ == '__main__':
application.run()
私はmod_wsgiが問題を見つけていないと仮定します config
私は設定を読んでいるときにエラーが発生しないので、データベースアクセスの詳細を含むファイルと私はまた、上のエラーを取得しません from app import models
.
これまでの私の研究では、これは間違ったスコープまたはコンテキストに存在するsql-alchemy db接続と関係があり、flask-restless API managerによって複雑になる可能性があ私はそれの周りに私の頭を包むように見えることはできません。
解決
Apache/mod_wsgiの下のコードは、特別なApacheユーザーとして実行されます。そのユーザーは、データベースに接続するために必要な権限を持っていない可能性があります。
'Localhost'と表示され、通常のソケット接続を意味すると思われますが、一部のデータベースクライアントでは'localhost'が表示され、代わりに自動的にデータベースにUNIXソケッそのUNIXソケット接続にアクセスできない可能性があります。
または、UNIXソケット接続を使用するときに、Apacheユーザーがアクセス権を持っているかどうかを検証しようとしていますが、データベースがApacheユーザーのアクセスを許可するように設定されていない場合は、失敗する可能性があります。
Mod_wsgiのデーモンモードの使用を検討し、apacheユーザーとは別のユーザーとして実行するようにデーモンモードを設定し、データベースにアクセスできることがわかってい