Django + PyMSQL + WSGI
Django + PyMSQL + WSGI
我有一个应用程序使用 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, "Can't connect to MySQL server on [server.address] ([Errno 13] Permission denied)")
我已将 pymysql 更新到 pip 上可用的最新版本。
我看到 1.7.3 纠正了 WSGI 中的一些安全问题,我试图降级到 1.7.2(仅通过执行 pip install django==1.7.2(不确定这是好方法))和问题仍然存在。
知道我可以尝试检查什么吗?
预先感谢您的帮助。
我认为这与访问 MySQL 数据库的 apache 权限有关。你可以试试命令:
setsebool -P httpd_can_network_connect_db 1
使用 -P 选项使更改持久化。如果没有此选项,布尔值将在重新启动时重置为 0。
我有一个应用程序使用 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, "Can't connect to MySQL server on [server.address] ([Errno 13] Permission denied)")
我已将 pymysql 更新到 pip 上可用的最新版本。
我看到 1.7.3 纠正了 WSGI 中的一些安全问题,我试图降级到 1.7.2(仅通过执行 pip install django==1.7.2(不确定这是好方法))和问题仍然存在。
知道我可以尝试检查什么吗?
预先感谢您的帮助。
我认为这与访问 MySQL 数据库的 apache 权限有关。你可以试试命令:
setsebool -P httpd_can_network_connect_db 1
使用 -P 选项使更改持久化。如果没有此选项,布尔值将在重新启动时重置为 0。