我有一个大问题试图连接到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]

当前回答

添加

--protocol=tcp 

跟你联系的那些偷车贼都对我有用。

其他回答

这个问题有很多解决方案,但对于我的情况,我只需要纠正机器/服务器上的日期(Ubuntu 16.04服务器)。

i)检查服务器的日期并改正。

ii) 运行 sudo /etc/init.d/mysql restart

这样就可以开始了。

我通过删除tc.log到/var/lib/mysql目录来解决,因为它在满磁盘后被腐蚀。然后,当我启动mysql时,日志文件被创建为新的。

尝试使用-h(主机)和-P(端口):

mysql -h 127.0.0.1 -P 3306 -u root -P

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

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

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

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

尝试执行以下命令:

sudo /etc/init.d/mysql start