Discuz的2003 cannot connect错误的一种解决方法

今天早上,无缘故的出现Discuz论坛无法连接的黄页,黄页的内容是discuz 2003 notconnect.

从表面上看是由于数据库无法连接导致的,但是查看了数据库的mysql服务,是正常启动的,无论是外部还是内部,都是可以连接数据库的.找了很多方法都没有办法定位原因,当然也没有办法解决.

突然间想到SELINUX,搜索了一下,发现SELINUX的确有可能会导致一些服务出现异常,

搜索了一下,网上有比较多的解决方法.一种是直接把SELINUX关闭.

一、查看SELinux状态命令:

1、/usr/sbin/sestatus -v      ##如果SELinux status参数为enabled即为开启状态
SELinux status:                 enabled

2、getenforce                 ##也可以用这个命令检查

二、关闭SELinux方法:

1、临时关闭(不用重启机器):

代码如下:

setenforce 0 #设置SELinux 成为permissive模式
#setenforce 1 设置SELinux 成为enforcing模式

2、修改配置文件需要重启机器:

修改/etc/selinux/config 文件

将SELINUX=enforcing改为SELINUX=disabled

重启机器即可.

另一种办法没有那么激进,添加SELINUX允许DB的远程访问.

修改apache远程访问数据库的布尔值

setsebool httpd_can_network_connect_db 1

什么是SELINUX

SELinux在linux中是保护系统的重要工具,它可以最大限度的保护系统的安全。也许有的人在使用过程中尝试着关闭过此工具,但是当考虑到要架设服务器的话,那就得重视它了。

假设我们希望允许远程匿名访问 Web 服务器,我们必须通过防火墙打开端口。然而,这意味着恶意人员可以尝试利用安全漏洞以及,如果他们损坏 Web 服务器进程,获得 apache 用户和 apache 组的权限来强行进入系统。懂点安全知识的人就知道很危险了,用户 / 组具有 document root ( /var/www/html )等的读取权限以及 /tmp 、/var/tmp 所有人均可写的任何其他文件 / 目录的写入权限。

SELinux 是一组可确定哪个进程能访问哪些文件、目录、端口等的安全规则。每个文件、进程、目录和

端口都具有专门的安全标签,称为 SELinux 上下文。上下文只是一个名称, SELinux 策略使用它来确定

某个进程是否能访问文件、目录或端口。默认情况下,该策略不允许任何交互,因此明确的规则授予访

问权限。如果没有允许规则,则不允许访问。

总之,SELinux 的目标之一是保护用户数据免受已泄漏的系统服务的威胁

SELinux 模式

为了进行故障排除,我们可以临时禁用 SELinux 保护,使用 SELinux 模式。

强制模式, SELinux 主动拒绝访问尝试读取类型上下文为 tmp_t 的文件的 Web 服务器。在强制

模式中, SELinux 不仅记录而且提供保护。

许可模式通常用于对问题进行故障排除。在许可模式中,即使没有明确规则, SELinux 也允许所有交

互,并且记录所有被拒绝的交互。此模式可以用于确定您是否有 SELinux 问题。无需重新引导即可从

强制模式转为许可模式,或再从许可模式转回强制模式。

禁用模式将完全禁用 SELinux 。您必须重新引导才能彻底禁用 SELinux ,或者从禁用模式

转为强制模式或许可模式。