文章目录
- 整体说明
- 一、问题背景
- 二、问题现象
- 三、问题分析
- 3.1、登录方式
- 3.2、两种方式适用情况
- 3.3、报错出现原因
- 3.4、Socket文件查找方式
- 四、解决方案
- 五、最终解决
摘要: MySQL登录报错 Can’t connect to local MySQL server through socket
关键词: MySQL、登录、报错、socket、解决办法
整体说明
在使用MySQL的时候,出现这个报错,整理了一下解决思路,大致如下:
一、问题背景
工作中需要登录生产环境,查看MySQL表数据生成情况,由于需要登录跳板机,只能沟使用机器使用 MySQL 客户端进行连接
二、问题现象
登录进跳板机,然后连接客户端,出现如下报错:
无法登录进数据库
三、问题分析
3.1、登录方式
-
MySQL 两种登录方式
-
TCP/IP连接:
- 通过网络协议通信,需要指定主机(IP或域名)和端口。
- 示例:
mysql -h 127.0.0.1 -P 3306 -u user -p
- 适用于远程或本地网络通信。
-
Socket连接 :
- 基于文件系统的本地进程间通信(无需网络协议),通过.sock文件实现。
- 示例:
mysql -u user -p --socket=/path/to/mysql.sock
- 仅限本地使用,性能更高且更安全
-
3.2、两种方式适用情况
-
推荐使用 Socket 的情况:
- 服务与客户端部署在同一台机器(如 Web 应用和数据库同机)。
- 高频短连接操作(如 PHP-FPM 进程频繁连接 MySQL)。
- 对延迟敏感的应用(如实时数据处理、金融交易系统)。
- 需要严格限制访问来源的场景(如仅允许本机的特定进程访问数据库)。
-
必须使用 TCP/IP 的情况:
- 服务与客户端跨机器通信。
- 需要通过代理或负载均衡器连接。
- 使用某些仅支持 TCP/IP 协议的中间件或工具。
3.3、报错出现原因
回到我们的问题上来,这时我们可以知道,我们连接的数据库使用的是 Socket 方式连接的,
但是 Socket 并不在默认的位置 /tmp/mysql.sock,所以就报错了。
这时我们又面临一个问题,怎么找到这个文件。
3.4、Socket文件查找方式
-
进程查找
通过找到 MySQL 服务,然后找到配置文件,最后找到 sock 文件位置
ps -ef | grep mysqld
执行结果如下:
然后查看 – defaults-file 文件
cat ***/23306/run/23306f
执行结果如下:
这样就能找到 .scok 文件路径
-
全局查找
如果没法找到,就使用全局查找
find / -type s -name "*.sock"
查找结果如下:
这样也能找到 .scok 文件路径
四、解决方案
使用 socket 语法登录
mysql -uadminuser -p -S ***/23306/run/23306.sock
五、最终解决
最终可以进入MySQL数据库,结果如下:
发布者:admin,转转请注明出处:http://www.yc00.com/web/1755026772a5228344.html
评论列表(0条)