带有SELinux的Python MySQLdb

时间:2014-12-20 21:29:39

标签: python django mysql-python selinux

我在我的django应用程序中使用mySQLdb模块,该应用程序通过WSGI链接到Apache。 但是,我得到了许可问题(如下所示)。这取决于SElinux,如果我把它设置为被动,一切都还可以。

  

ImproperlyConfigured:加载MySQLdb模块时出错:   /opt/django/virtenv/django15/lib/python2.7/site-packages/_mysql.so:   无法从共享对象映射段:权限被拒绝

更新SELinux以包含此内容的最佳方法是什么,而不必关闭整个事情。错误如下所示:

  

ImproperlyConfigured:加载MySQLdb模块时出错:   /opt/django/virtenv/django1/lib/python2.7/site-packages/_mysql.so:   cfared从共享对象映射段:权限被拒绝

4 个答案:

答案 0 :(得分:9)

正如@ Gohn67建议的那样,更改相关文件的SELinux安全上下文,允许HTTPD进程执行它:

sudo chcon -R -h -t httpd_sys_script_exec_t /opt/django/virtenv/django15/lib/python2.7/site-packages/_mysql.so

答案 1 :(得分:0)

为了更准确,请执行:

# ls -lZ /opt/django/virtenv/django1/lib/python2.7/site-packages
# ls -lZ /opt/django/virtenv/django1/lib/python2.7/site-packages/_mysql.so
# grep mysql /var/log/audit/audit.log | audit2allow -w -a -r -v
# grep mysql /var/log/audit/audit.log | audit2allow -a -r -R mysql

答案 2 :(得分:0)

我注意到一些许可问题:

  1. 确保mySQLdb的凭据可以访问数据库。
  2. 如果您使用IP和端口连接数据库,请尝试使用localhost。
  3. 确保用户(chmod权限)可以访问mySQL存储内容的文件夹。有时在存储媒体和事物时,它需要对实际文件夹的许可。
  4. 最后,我会尝试重置Apache服务器(而不是整个机器)。

答案 3 :(得分:0)

我不知道为什么,但this适合我

$ sudo chcon -t shlib_t /opt/django/virtenv/django15/lib/python2.7/site-packages/*.so