Can't connect to local MySQL server through socket
mysql -uroot
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
这是mysql登录时找不到套接字的问题。
首先需要明白的是,Linux端的mysql server启动时会开启一个socket,Linux上的MySQL的客户端在不使用IP连接时mysql server时,默认也会通过套接字来链接mysql server。
1.mysql server的套接字文件。
如果不手动配置my.cnf,那么默认的socket一般是DATADIR/mysql.sock
,而DATADIR
如果没有手动修改,一般默认是/var/lib/mysql目录。不同的mysql版本,可能socket的默认路径是/tmp/mysql.sock。
例如我将socket路径修改为/data/mysql.sock
。
2.客户端连接时使用的套接字文件。
在Linux上的各种mysql类客户端(例如mysql,mysqladmin,mysqldump,mysqlimport等)连接mysql server时,如果指定的主机名是'localhost',则会使用套接字来连接mysql server。因此,必须为这些客户端指定正确的套接字。
方法一:在连接命令行上使用"-S"选项指定
mysqladmin -S /data/mysql.sock
mysql -S /data/mysql.sock
mysqldump -S /data/mysql.sock
方法二:在配置文件中指定
例如在my.cnf中:
[client]
socket=/data/mysql.sock
client段的配置表示任何客户端连接mysql server时都使用该段配置。因此,这样配置后,无论是mysql、mysqldump、mysqladmin还是其他的客户端都会使用socket=/data/mysql.sock
进行连接。
除了使用[client]
指定全局客户端的连接参数,还可以为特定的客户端指定连接参数。例如下面为mysql、mysqldump、mysqladmin这3个客户端分别指定socket连接参数。
[mysql]
socket=/data/mysql.sock
[mysqldump]
socket=/data/mysql.sock
[mysqladmin]
socket=/data/mysql.sock
注意:如果使用IP,例如mysql -uroot -h'192.168.100.10'
则表示使用TCP/IP协议连接mysql,这时不会使用套接字,就没有套接字找不到的问题。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了