
早些時候,我遇到了一個與 .htacess 檔案有關的問題,但我已經解決了這個問題,但在此過程中我認為重新安裝 Apache2 會很好。這解決了所有 Web 伺服器問題,但是當我嘗試使用 MySQL 時,它給了我這個錯誤:
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)
請幫忙:O。我可以重新製作所有資料庫,但我無法讓 MySQL 工作,所以在這個問題解決之前我基本上無法對我的伺服器做任何事情。
提前致謝 :)
答案1
當我遇到這個問題時,我會做三件事:
檢查mysql進程是否正在運作。 A
ps -e
應該可以解決問題。對我來說,做一個service mysql stop
.我不得不手動killall mysql
。檢查以確保 my.cnf 正確指向套接字檔案應在的位置。有時會發生這樣的情況:在設定中您有 /var/run... 但隨後在設定檔中卻顯示了其他內容。 my.conf 檔案所在的位置也是如此。預設情況下,你會在/etc/mysql/my.cnf 中看到它,但在其他情況下,它可能在/etc/my.cnf 中(並且/etc/mysql 資料夾不應該在那裡與2個mysql 配置來源混淆)
最後確保套接字檔案所在的目錄具有正確的權限。
大多時候 1 就夠了。至少對我來說,在進行某些配置時會發生這種情況,並且我錯誤地使用錯誤的配置重新加載了 mysql。
答案2
錯誤 (2002) Can't connect to ... 通常表示系統上沒有執行 MySQL 伺服器。
~$ sudo service mysql restart
mysql start/running, process 3912
或停止然後啟動
:~$ sudo service mysql stop
mysql stop/waiting
~$ sudo service mysql start
mysql start/running, process 3994
您還應該檢查您正在使用的 TCP/IP 連接埠是否未被防火牆或連接埠阻止服務封鎖。在這裡閱讀更多內容。
sudo telnet some_host 3306
透過執行並按 Enter 鍵幾次來檢查伺服器是否正在該主機上執行。 (3306 是預設的 MySQL 端口號。如果您的伺服器正在偵聽不同的端口,請更改該值。)如果有正在運行並偵聽該端口的 MySQL 伺服器,您應該收到包含伺服器版本號的回應。如果您收到諸如 之類的錯誤telnet: Unable to connect to remote host: Connection refused
,那麼給定連接埠上沒有正在運行的伺服器。
以我的為例(西班牙文):
~$ sudo netstat -a | grep mysql
tcp 0 0 localhost:mysql *:* ESCUCHAR
unix 2 [ ACC ] FLUJO ESCUCHANDO 18740 /var/run/mysqld/mysqd.sock
我的正在工作:但是請透過遠端登入我的本機主機來查看。 =D
~$ sudo telnet localhost 3306
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
E
5.1.61-0ubuntu0.11.10.1"]+Ya]-gQO{<X)_&<:NXConnection closed by foreign host.
marcelo@acer:~$