Discuz! Database Error(2003) notconnect 问题解決

最近在進行基於Discuz 開發項目時,遭遇到這樣的問題:Discuz!Database Error(2005/2003/..) notconnect,这个是数据库连接错误。
錯誤的顯示頁面截圖

在網絡上找到的解決方案如下:

微软更新补丁后造成的

这个补丁是:微软补丁KB967723

修改注册表,建议值为 65533(十进制)

默认的临时 TCP 端口的最大数量是 5000″适用于”部分中包括的产品。已在这些产品中添加新参数。若要增加临时端口的最大数量,请执行以下步骤:

  • 启动注册表编辑器。
  • 在注册表中,找到以下子项,然后单击 $参数
    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
  • 在编辑菜单中,单击新建,然后添加以下注册表项:
    值名称: MaxUserPort
    值类型: 双字节
    值数据: 65534
    有效范围: 5000-65534 (十进制)
    默认值: 0×1388 (5000 十进制)
    说明: 此参数控制程序请求任何可用的用户端口从系统时使用的最大端口号。通常情况下,暂时 (短期) 的端口被分配值 1024年和 5000 (含) 之间。之后的安全公告 MS08-037 发布,Windows Server 2003 的行为已更改,以更好地匹配的 Windows Server 2008 和 Windows Vista。
  • 退出注册表编辑器,然后重新启动计算机。
    注意其他 TCPTimedWaitDelay 注册表参数确定在多长时间关闭的端口一直等待,直到关闭的端口可以重复使用。

    当然还有另外一种办法

    卸载这个补丁,在控制面板里卸载即可。不推荐这么做,更新补丁肯定是有原因的,卸载可能导致系统不稳定就得不偿失了。
    修改完以后重启服务器即可。

centOS情況下的錯誤

問題在於,我的服務器系統是centOS哈,不可能修改註冊表吧!
折騰一段時間後,發現是SELinux的問題。
此问题的原因是SELinux阻止httpd进程–httpd_can_network_connect_db 连接数据库–不管是哪种类型的数据库。
解決辦法:

/usr/sbin/getsebool httpd_can_network_connect_db

httpd_can_network_connect_db –> off
/usr/sbin/setsebool httpd_can_network_connect_db on
/usr/sbin/setsebool -P httpd_can_network_connect_db on

詳見:Can't connect to MySQL server on 'ip' (13) 的解决方案 ,錯誤原因是相同的。

你可能感兴趣的:(discuz,selinux,notconnect)