Linux

ERROR 2002 (HY000): 無法通過套接字 ‘/var/lib/mysql/mysql.sock’ 連接到本地 MySQL 伺服器 (2)

  • May 11, 2018

我有一個執行 WordPress 的 Linux 伺服器(Centos 7)和另一個執行 MySQL 的 Linux 伺服器(Ubuntu)。WordPress 和數據庫之間的通信正常。但是,在 Web 伺服器重新啟動後,我在瀏覽器中看到以下消息:

無法訪問此站點

通過以下方式確定 Apache 未執行:ps -ef | grep http

我通過以下方式手動啟動 Apache:service httpd start

***** 我確實希望 Apache 在伺服器重新啟動後自動啟動 *****

現在 Apache 在瀏覽器中返回以下消息:建立數據庫連接時出錯

嘗試通過以下方式測試連接後:mysql

Linux返回錯誤:ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock’ (2)

目錄“/var/lib/mysql/”是空的。我在網際網路上讀到,當 MySQL 服務執行時,它會創建套接字。退出時,套接字文件被刪除。不確定這是不是真的。

所以這似乎是一個 MySQL 套接字問題。

在這方面期待大家的幫助…

如果您有 Centos/Red Hat/Fedora/Suse,並且您的某些東西似乎以 root 或其他登錄使用者身份工作,但不是來自網路伺服器等應用程序,那麼請檢查您的實例是否有 selinux on with sestatus.

sestatus

SELinux status: enabled
SELinuxfs mount: /selinux
Current Mode: enforcing

如果它處於強制執行模式,那麼您可以檢查審核日誌以查看您的問題是否存在。例如,查看httpd程序中執行的某些錯誤:

ausearch -c "httpd" -m AVC,USER_AVC,SELINUX_ERR,USER_SELINUX_ERR -i

和/或使用:

sealert -a /var/log/audit/audit.log > /path/to/mylogfile.txt

對於一些常見問題,存在用於調整預設策略工作的*布爾值。*對於完整的列表使用getsebool -a

對於 httpd 伺服器,您可以選擇通過網路專門訪問一些常見的數據庫埠,httpd_can_network_connect_db以及更通用的完整網路訪問,httpd_can_network_connect. 這適用於在 httpd 中使用 php 作為模組並且它必須通過網路連接訪問數據庫的情況。

如果您不想更改它們,請使用setsebool -P <boolean_name_> {0|1|on|off}. 沒有-P設置將在重新啟動時恢復。

如果您確實想閱讀 selinux,這是一個很好的起點:https ://wiki.centos.org/HowTos/SELinux

引用自:https://serverfault.com/questions/911665