【问题标题】:flask-restless with mod_wsgi can't connect to MySQL server带有mod_wsgi的flask-restless无法连接到MySQL服务器
【发布时间】:2014-07-24 17:41:21
【问题描述】:

我正在尝试使用 mod_wsgi 在 apache 中运行烧瓶不安分的应用程序。这适用于开发服务器。我已经阅读了我能找到的所有内容,但我所看到的答案似乎都不适合我。该应用程序可以正确处理非数据库请求,但当我尝试访问需要数据库访问权限的 url 时出现以下错误:

OperationalError: (OperationalError) (2003, "Can't connect to MySQL server on 'localhost' ([Errno 13] Permission denied)") None None

我已经通过我的config 和我的烧瓶-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 连接有关,并且可能因烧瓶不安的 API 管理器而变得复杂。我似乎无法理解它。

【问题讨论】:

    标签: python apache mod-wsgi flask-sqlalchemy flask-restless


    【解决方案1】:

    您在 Apache/mod_wsgi 下的代码将以特殊的 Apache 用户身份运行。该用户可能没有连接到数据库所需的权限。

    即使它显示“localhost”并且您认为这可能意味着正常的套接字连接,但某些数据库客户端会看到“localhost”并且会自动尝试使用 UNIX 套接字来连接数据库。它可能无法访问该 UNIX 套接字连接。

    或者,当通过 UNIX 套接字连接时,它会尝试验证 Apache 用户是否具有访问权限,但如果数据库尚未设置为允许 Apache 用户访问,则可能会失败。

    考虑使用 mod_wsgi 的守护程序模式并将守护程序模式配置为以与 Apache 用户不同的用户身份运行,并且您知道该用户可以访问数据库。

    【讨论】:

    • 我一开始以为是数据库访问权限问题,但是因为我经常在同一台机器上用PHP访问mysql,所以拒绝了。你的解释让我重新审视。更改 mod_wsgi 守护程序模式的用户并没有什么不同。事实证明 selinux 阻止了连接。解决方案是setsebool httpd_can_network_connect_db 1。非常感谢您的帮助。
    • 我也打算这样做,但我想我会先尝试最简单的解释。 SELinux 会抛出各种奇怪的问题。 SELinux 在 code.google.com/p/modwsgi/wiki/… 的文档中被引用
    猜你喜欢
    • 2021-11-19
    • 2014-07-05
    • 1970-01-01
    • 2015-05-10
    • 2012-11-03
    • 2015-01-21
    • 1970-01-01
    相关资源
    最近更新 更多