阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

Can’t connect to local MySQL server through socket

105次阅读
没有评论

共计 1100 个字符,预计需要花费 3 分钟才能阅读完成。

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,这时不会使用套接字,就没有套接字找不到的问题。

正文完
星哥说事-微信公众号
post-qrcode
 
星锅
版权声明:本站原创文章,由 星锅 2022-01-22发表,共计1100字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中