之前我遇到过一个与 .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 进程是否正在运行。
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) 无法连接到...通常意味着系统上没有运行 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:~$