Linux 下 MySQL 常用登录方式及 Socket 排查指南

Linux 服务器上登录 MySQL,常用方式主要有两类:

  • Unix Socket 本地登录

  • TCP/IP 登录

如果 MySQL 使用非默认端口或非默认 Socket,直接执行 mysql -uroot -p 可能会连接失败。本文整理常见登录方式及快速排查方法。

一、本地 Socket 登录

最常见的方式:

复制代码
mysql -uroot -p

这种方式默认通过 Unix Socket 连接本机 MySQL。

如果 MySQL 使用的是自定义 Socket,需要明确指定:

复制代码
mysql -uroot -p --socket=/app/data/mysql/13310/run/mysql.sock

如何查找实际 Socket

首先查看 mysqld 进程:

复制代码
ps -ef | grep mysqld | grep -v grep

如果启动参数中直接看到:

复制代码
--socket=/app/data/mysql/13310/run/mysql.sock

那么这个就是实际 Socket。

如果没有 --socket,但看到:

复制代码
--defaults-file=/app/mysql/conf/my.cnf

说明相关参数可能写在配置文件中,继续查询:

复制代码
grep -n "socket" /app/mysql/conf/my.cnf

如果仍然找不到,可以从系统层面查:

复制代码
find /app -type s -name "*.sock" 2>/dev/null

或者:

复制代码
ss -xl | grep mysql

排查思路可以记成:

复制代码
ps 查看 mysqld
    ↓
找 --socket
    ↓
没有则找 --defaults-file
    ↓
查看 my.cnf
    ↓
仍没有则 find / ss

二、本机 TCP 登录

如果不想使用 Socket,也可以直接走 TCP:

复制代码
mysql -uroot -p -h127.0.0.1 -P13310

其中:

复制代码
-h127.0.0.1    数据库地址
-P13310        MySQL端口

需要特别注意:

复制代码
mysql -uroot -p -P13310

不代表一定通过 TCP 连接。

如果没有指定 -h,Linux 下 MySQL 客户端通常仍会尝试通过 Socket 连接。

例如可能报:

复制代码
ERROR 2002 (HY000):
Can't connect to local MySQL server through socket '/tmp/mysql.sock'

因此,如果明确想走 TCP,建议写完整:

复制代码
mysql -uroot -p -h127.0.0.1 -P13310

三、远程 TCP 登录

从其他服务器连接 MySQL:

复制代码
mysql -u用户名 -p -h数据库IP -P端口

例如:

复制代码
mysql -dbuser -p -h10.1.10.20 -P13310

连接前可以先测试网络端口:

复制代码
nc -vz 10.1.10.20 13310

远程连接需要同时满足:

复制代码
网络可达
+
MySQL端口正常监听
+
防火墙允许访问
+
数据库账号允许对应Host登录

四、通过配置文件免密登录

Linux 数据库服务器上也经常使用:

复制代码
/root/.my.cnf

例如:

复制代码
[client]
user=root
password="******"
socket=/app/mysql/run/mysql.sock

建议权限:

复制代码
chmod 600 /root/.my.cnf

配置完成后可以直接:

复制代码
mysql

这种方式比较适合:

复制代码
备份脚本
巡检脚本
定时任务

不需要把密码直接写在命令行中。


五、登录后确认数据库实际配置

登录成功后,可以快速查看:

复制代码
show variables like 'socket';
show variables like 'port';
show variables like 'datadir';

也可以一次查看主要信息:

复制代码
select
@@hostname,
@@port,
@@version,
@@server_id,
@@read_only,
@@super_read_only;

如果是 MySQL 从库:

复制代码
show replica status\G

重点关注:

复制代码
Source_Host
Source_Port
Replica_IO_Running
Replica_SQL_Running
Seconds_Behind_Source
Last_IO_Error
Last_SQL_Error

六、常用命令速查

默认本地登录

复制代码
mysql -uroot -p

指定 Socket

复制代码
mysql -uroot -p --socket=/实际路径/mysql.sock

本机 TCP

复制代码
mysql -uroot -p -h127.0.0.1 -P13310

远程 TCP

复制代码
mysql -u用户 -p -h数据库IP -P端口

查看 MySQL 启动参数

复制代码
ps -ef | grep mysqld | grep -v grep

查找 Socket

复制代码
find /app -type s -name "*.sock" 2>/dev/null

查看监听端口

复制代码
ss -lntp | grep mysqld

总结

Linux 登录 MySQL 主要就是两种方式:

复制代码
Socket
或
TCP/IP

如果直接:

复制代码
mysql -uroot -p

提示找不到 /tmp/mysql.sock,不要首先怀疑密码,而应该检查 MySQL 实际使用的 Socket。

最实用的排查顺序是:

复制代码
ps 查看 mysqld
→ 找 socket / defaults-file
→ 确认实际 Socket 或端口
→ 选择 Socket 或 TCP 登录

其中最容易混淆的一点是:

只写 -P端口 并不会强制 MySQL 使用 TCP;明确走 TCP 时,应使用 -h127.0.0.1 -P端口。

这版更适合作为博客正文:内容不重复,同时保留了 Socket 查找、TCP 登录和常见错误这几个核心知识点。

相关推荐
whyutianict_vv13 小时前
云计算 HCIE 认证体系解析:HCIA/HCIP/HCIE 三级科目与知识边界
linux·运维·云计算
IT199520 小时前
Fail2Ban 防护 MySQL 实战|登录失败 3 次,IP 封禁 24 小时
数据库·mysql
夕除20 小时前
redis--IO 多路复用(select + poll)
数据库·sql
0+11120 小时前
Linux --从 poll 到 epoll多路转接
linux·服务器·1024程序员节
青瓦梦滋20 小时前
WebSocket协议
linux·服务器·网络·c++·websocket·网络协议·http
桌面运维家21 小时前
旧电脑跑不动课程软件,VDI云桌面怎样接着用?
运维·服务器·虚拟化·pve·vdi·云桌面
zhang1338308907521 小时前
传统机械三杯式风速传感器易磨损冻堵?CG-88金属超声波风速风向传感器给出免运维方案
运维·服务器·网络·人工智能·自动化
知已难寻21 小时前
第 2 篇 · 云的地基:服务器、存储、网络三大基础设施
运维·服务器·网络·云原生·云计算·负载均衡·1024程序员节
paopaokaka_luck1 天前
流浪动物救助与收养系统(DeepSeek AI对话、 ECharts多维分析、救助流程衔接、领养与回访衔接、 捐赠确认与公示、志愿者协作)
java·前端·javascript·人工智能·mysql·echarts·推荐算法
2601_949847751 天前
bcrypt.js 跨端三方库仓颉适配全流程
linux·运维·ubuntu