ITPub博客

首页 > 数据库 > MySQL > Can't connect to local MySQL server through socket

Can't connect to local MySQL server through socket

原创 MySQL 作者:DBA_每日记 时间:2024-09-19 08:44:38 0 删除 编辑
mysql -urootERROR 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.sockmysql -S /data/mysql.sockmysqldump -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,这时不会使用套接字,就没有套接字找不到的问题。


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69950231/viewspace-3028121/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
聚焦人文和技术,分享干货,共同成长

注册时间:2019-10-09

  • 博文量
    177
  • 访问量
    238544