
以前、.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
この問題が発生した場合、私が行うことは次の 3 つです。
mysql プロセスが実行中かどうかを確認します。 で
ps -e
うまくいくはずです。 私の場合、 を実行してもうまくいきませんでしたservice mysql stop
。 手動で する必要がありましたkillall mysql
。my.cnf がソケット ファイルの場所を正しく指しているかどうか確認しました。構成に /var/run... とあるのに、構成ファイルでは別のことが書かれていることがあります。my.conf ファイルの場所についても同じです。デフォルトでは /etc/mysql/my.cnf にありますが、他の場合には /etc/my.cnf にあることがあります (また、2 つの mysql 構成ソースと混同しないように /etc/mysql フォルダーはそこにあってはいけません)。
最後に、ソケット ファイルがあるディレクトリに適切な権限があることを確認します。
ほとんどの場合、1 で十分です。少なくとも私の場合は、何らかの構成を行っていて、間違った設定で誤って mysql をリロードしたときに、このようなことが起こります。
答え2
エラー(2002)「接続できません...」は通常、システム上で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 ポートがファイアウォールまたはポート ブロック サービスによってブロックされていないことも確認する必要があります。詳細はこちら。
を実行してEnterキーを数回押し、そのホストでサーバーが稼働しているかどうかを確認しますsudo telnet some_host 3306
。(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
私のは動作しています: しかし、ローカルホストに Telnet を実行して確認してみましょう。=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:~$