报错
当我使用命令 mysql -uproot -proot
去连接 MySQL
服务器端的时候,发现了这个报错
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
问题描述
当 MySQL
在 Linux 创建连接的时候,需要一个 mysql.sock
。它相当于一个配置文件。当你发现爆这个错的时候,大约有两种情况:
- 你没有打开这个文件的权限。可以通过命令行修改权限
- 这个文件不存在,你可以自己去创建
如果上述情况都不同,建议去查看 MySQL
的日志文件。(如果你没修改过的话,一般路径是:/var/log/mysqld.log
)
解决方案
首先明确的是,无论是 MySQL
服务器还是客户端,都需要连接这个文件。所以在这个文件里边,肯定包括了 mysqld
和 mysql
的相关参数。
mysqld
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
重点是 socket 的值。我们将 mysqld
的数据指定了一个路径,而其 sock
文件也将会在这个目录下,但是记得需要保证您有该文件夹的权限。
mysql
[client]
default-character-set=utf8
socket=/var/lib/mysql/mysql.sock
[mysql]
default-character-set=utf8
socket=/var/lib/mysql/mysql.sock
这个是 mysql
命令行及外来连接的一个配置。你会发现这个 sock
的路径和上面的 mysqld
路径是一样的。那这样就很好理解了,客户端的连接配置肯定与服务端一样,才能连接得上。
结尾
无论你是用了 mysql
还是 mysqld
得命令,我们都记得需要重启才能生效。