【问题标题】:Django + PyMSQL + WSGIDjango + PyMSQL + WSGI
【发布时间】:2015-03-14 00:33:46
【问题描述】:

我有一个应用程序使用 PySQL 和以下函数访问远程 mysql 库

def db_query(username, password, host, db, query):
    try:
        db = pymysql.connect(host=host, user=username, passwd=password, db=db)
    except pymysql.err.OperationalError as e:
        errorLog = e
        return [0, errorLog]

    # you must create a Cursor object. It will let you execute all the query you need
    cur = db.cursor()

    cur.execute(query)
    result = cur.fetchall()

    cur.close()
    db.close()  

    return result

我最近将 Django 从 1.7.1 更新到 1.7.3。在更新代码起作用之前。现在,当我使用 WSGI 进行生产时(不是在本地开发服务器上,也不是在服务器开发服务器上)我得到一个(2003,“无法连接到 [server.address] 上的 MySQL 服务器([Errno 13 ] 权限被拒绝)")

我已将 pymysql 更新为 pip 上可用的最新版本。

我看到 1.7.3 纠正了 WSGI 中的一些安全问题,我尝试降级到 1.7.2(仅通过执行 pip install django==1.7.2(不确定这是好方法)),问题是仍然存在。

知道我可以尝试检查什么吗?

提前感谢您的帮助。

【问题讨论】:

  • 我认为这与apache访问MySQL数据库的权限有关。你可以试试命令:setsebool -P httpd_can_network_connect_db 1
  • 太棒了,就是这样!它又开始工作了。实际上服务器在它无法再次工作之前重新启动,所以我猜这个设置是不稳定的。如何设置重启?
  • 使用 -P 选项使更改持久化。如果没有此选项,布尔值将在重新启动时重置为 0。你确定你用 -P 选项执行了命令吗?
  • 谢谢你,现在我做到了。我想它不是第一次这样做。非常感谢。您可能想发布评论作为答案,以便我接受?
  • 作为答案发布:)

标签: python mysql django mod-wsgi pymysql


【解决方案1】:

我认为这与 apache 访问 MySQL 数据库的权限有关。你可以试试命令:

setsebool -P httpd_can_network_connect_db 1

使用 -P 选项可以使更改持久化。如果没有此选项,布尔值将在重新启动时重置为 0。

【讨论】:

    猜你喜欢
    • 2012-09-09
    • 2012-08-17
    • 2018-03-05
    • 2011-07-31
    • 2011-06-27
    • 2011-09-12
    • 2013-02-01
    • 2012-05-04
    • 2012-05-26
    相关资源
    最近更新 更多