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

相关推荐
卓怡学长4 小时前
w255基于springboot仓库管理系统
java·数据库·spring boot·spring·intellij-idea
J-Tony117 小时前
【Redis】 Redis 是单线程还是多线程
服务器·数据库·mysql
这个DBA有点耶7 小时前
SQL调优进阶:从“优化一条SQL”到“优化一个系统”的思维升级
java·大数据·数据库·sql·程序人生·dba·改行学it
IvorySQL7 小时前
PG 日报|SQL/PGQ 图查询基于联接重写机制实现
数据库·人工智能·sql·postgresql·区块链·ivorysql
数聚天成DeepSData10 小时前
遥感农业数据集下载全攻略
数据库·人工智能·深度学习·机器学习·自然语言处理·数据挖掘
一勺菠萝丶11 小时前
生产环境平滑升级实战-Nginx维护页数据库迁移与安全回滚
数据库·nginx·安全
心静自然凉80011 小时前
MySQL主从同步配置(一主一从)
数据库
haidy ahmed11 小时前
企微复杂审批流反序列化:动态表单解析引擎与EAV存储模型
数据库·人工智能·自动化·企业微信
Lihua奏11 小时前
MVCC:为什么多人同时读写数据,数据库还能不乱
数据库
9523612 小时前
Redis - 应用
数据库·redis·分布式·缓存