我有一个大问题试图连接到mysql。当我跑步时:

/usr/local/mysql/bin/mysql start

我有以下错误:

Can't connect to local MySQL server through socket '/var/mysql/mysql.sock' (38)

我有mysql。Sock在/var/mysql目录下。

在/etc/my.cnf中,我有:

[client]
port=3306
socket=/var/mysql/mysql.sock

[mysqld]
port=3306
socket=/var/mysql/mysql.sock
key_buffer_size=16M
max_allowed_packet=8M

在/etc/php.ini中有:

; Default socket name for local MySQL connects.  If empty, uses the built-in
; MySQL defaults.
mysql.default_socket = /var/mysql/mysql.sock

我已经使用sudo /opt/local/apache2/bin/apachectl restart重启apache

但还是有误差。

否则,我不知道这是否相关,但当我执行mysql_config——sockets时,我得到

--socket         [/tmp/mysql.sock]

当前回答

这并没有直接回答你的问题,而是它的一个子集,即使用PythonAnywhere。在寻找解决方案时,我一直在无意中遇到这个问题,所以我在这里添加了它,希望它能帮助其他处于我这种情况的人。


PythonAnywhere决定更改数据库连接主机名,以提高效率和可靠性,详情如下:

用于连接您的帐户的正式主机名 MySQL数据库实例由MySQL更改。服务器 yourusername.mysql.pythonanywhere-services.com。这绕过了我们的基础设施的一部分,最近开始出现问题 几周,它应该比旧的更有效和可靠 道路

因此,您需要将主机名更新为上面突出显示的值。

其他回答

确保运行mysqld: /etc/init.d / mysql开始

如果您使用的是AWS (Amazon Web Services)微型版本,则是内存问题。当我奔跑

mysql

从终端它会说

ERROR 2002 (HY000): Can't connect to local MySQL server through socket /var/run/mysqld/mysqld.sock' (111)

所以我尝试了下面的方法,但它会失败。

service mysqld restart

经过大量的搜索,我发现你必须为MySQL创建一个交换文件以获得足够的内存。说明如下:http://www.prowebdev.us/2012/05/amazon-ec2-linux-micro-swap-space.html。

然后,我可以重新启动mysqld。

我有这个套接字错误,它基本上归结为MySQL没有运行。如果您运行一个新的安装,请确保您安装了1)系统包和2)面板安装程序(mysql.prefPane)。面板安装程序将允许你进入你的系统首选项并打开MySQL,然后让一个实例运行。

请注意,在重新安装时,我需要重置我的计算机以使更改正确生效。在重新启动之后,我得到了一个新的实例,并且能够毫无问题地打开到localhost的连接。

同样值得注意的是,我显然已经安装了以前版本的MySQL,但已经删除了面板,这使得它很容易为mac用户运行MySQL实例。

关于这个重新安装的过程有一个很好的链接:http://www.coolestguyplanettech.com/how-to-install-php-mysql-apache-on-os-x-10-6/

当您使用localhost连接到MySQL时,操作系统使用套接字连接器。但是,如果您使用127.0.0.1 IP地址,操作系统将使用TCP/IP连接器。因此,当您遇到套接字连接器的问题时,一个可能的解决方案是通过指定127.0.0.1 IP地址而不是localhost来尝试使用TCP/IP建立连接。

从这里的许多答案可以看出,在启动MySQL服务时,有许多问题会导致这个错误消息。问题是,MySQL通常会告诉你哪里出了问题,如果你只查看适当的日志文件。

例如,在Ubuntu上,你应该检查/var/log/syslog。由于许多其他内容也可能记录到这个文件中,您可能希望使用grep查看mysql消息,而tail只查看最近的消息。所有这些加在一起,可能是这样的:

Grep mysql /var/log/syslog | tail -50

不要因为别人说“这适用于我的系统”就盲目地更改您的配置。找出你的系统到底出了什么问题,你就能更快地得到更好的结果。