文章目录

  • MySQL 连接指定端口后,为什么实际仍是 3306?
  • 问题现象复现
  • 原因分析
    • 没有指定 -h,默认走的是本地 Unix Socket
    • 多实例环境中未显式指定目标地址
  • 正确的连接方法
    • 方法一:添加 -h 127.0.0.1
    • 方法二:添加 --protocol=TCP
  • 验证是否连接成功
  • 附加说明
  • 总结
    • ✅ 建议


MySQL 连接指定端口后,为什么实际仍是 3306?

在日常运维或开发过程中,有时我们在使用 mysql 命令行工具连接 MySQL 实例时,可能会遇到一个令人疑惑的问题:

mysql -u root -p -P 3307

本以为连接的是监听在 3307 端口的 MySQL 实例,但登录进去后执行:

SELECT @@hostname, @@port;

却发现:

+----------------+--------+
| @@hostname     | @@port |
+----------------+--------+
| your-hostname  | 3306   |
+----------------+--------+

也就是说,实际连接的是 3306 端口,而不是我们指定的 3307。这是为什么?本文将为你详细解答。


问题现象复现

命令:

mysql -u root -p -P 3307

登录成功后执行:

SELECT @@port;

输出结果却是:

3306

这说明当前连接的 MySQL 实例监听端口为 3306,而不是我们指定的 3307。


原因分析

没有指定 -h,默认走的是本地 Unix Socket

MySQL 客户端有两种连接方式:

  • Unix Socket(本地文件方式),路径一般是 /tmp/mysql.sock
  • TCP/IP(网络方式)

当你没有指定 -h 参数时,例如:

mysql -u root -p -P 3307

MySQL 客户端会默认使用 Unix Socket 方式连接本地 MySQL 实例,而不是 TCP 连接。

而本地默认的 Socket 通常连接的是 MySQL 默认端口 3306 的实例。这就解释了为什么你看到的是 @@port = 3306

提示-P 端口号只在 TCP 连接中才会生效,Socket 连接时会被忽略。


多实例环境中未显式指定目标地址

如果你在本机运行了多个 MySQL 实例(例如一个监听 3306,另一个监听 3307),但没有明确指定连接主机地址,则默认连接的是 3306 监听的实例。


正确的连接方法

为了确保连接到指定端口上的实例,你需要强制使用 TCP 连接方式。

方法一:添加 -h 127.0.0.1

mysql -u root -p -P 3307 -h 127.0.0.1

指定主机地址为 127.0.0.1,客户端就会使用 TCP 协议连接指定端口。

方法二:添加 --protocol=TCP

mysql -u root -p -P 3307 --protocol=TCP

这个参数显式告诉 MySQL 客户端使用 TCP 协议,而不是默认的 Socket。


验证是否连接成功

进入 MySQL 后执行以下命令验证:

SELECT @@hostname, @@port, @@socket;

如果你看到的是:

+-------------+--------+----------------------+
| @@hostname  | @@port | @@socket             |
+-------------+--------+----------------------+
| localhost   | 3307   | NULL                 |
+-------------+--------+----------------------+

说明你成功通过 TCP 连接到了监听 3307 的实例。


附加说明

如果你使用 socket 配置了多个实例,可能存在多个 socket 文件,如:

# /etc/my.cnf
[mysqld]
port=3306
socket=/var/lib/mysql/mysql.sock[mysqld_multi]
[mysqld1]
port=3306
socket=/var/lib/mysql/mysql.sock[mysqld2]
port=3307
socket=/var/lib/mysql3307/mysql.sock

此时命令行客户端也可以用 --socket 显式连接对应实例:

mysql -u root -p --socket=/var/lib/mysql3307/mysql.sock

总结

问题原因解决方法
未指定 -h,默认走本地 Socket,连接到了 3306 实例使用 -h 127.0.0.1--protocol=TCP 强制使用 TCP 连接
本机有多个 MySQL 实例,未显式指定主机或 socket 文件使用 --socket=路径 或 TCP 方式连接指定端口

✅ 建议

以后如果你需要连接指定端口的 MySQL 实例,务必显式指定 -h 参数或使用 --protocol=TCP,否则 -P 参数可能不会生效


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/pingmian/86653.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/86653.shtml
英文地址,请注明出处:http://en.pswp.cn/pingmian/86653.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Android当用户两次打断息屏操作后,屏幕将会在10分钟内无法熄灭并持续点亮(关闭Android13新增的dim功能)】

UndimDetectorWakeLock持锁导致屏幕不灭问题处理SOP 问题描述 在Android T版本中,系统新增了SCREEN_BRIGHT_WAKE_LOCK(UndimDetectorWakeLock)机制。当设备处于低亮度(dim)状态时,用户两次打断屏幕熄灭操…

Tailwind CSS自定义用法

文章目录 前言✅ 一、集成 Tailwind CSS 到 React 项目1. 安装依赖2. 配置 tailwind.config.js3. 创建全局样式文件(如 src/index.css)tailwind base;tailwind components;tailwind utilities; 4. 在 main.tsx 或 main.jsx 中引入样式 ✅ 二、自定义样式…

linux面试常考

常用指令 常见题

Spring Boot 2.2.6调用DeepSeek API并通过SSE将流式响应推送给前端的完整实现

1. 添加依赖 (pom.xml) <dependencies><!-- Spring Boot Web --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!-- SSE 支持 --><depe…

LM1117-ADJ 简单介绍

LM1117-ADJ是一款可调输出电压的低压差线性稳压器&#xff08;LDO&#xff09;&#xff0c;具有以下关键特性和应用要点&#xff1a; 核心特性 可调输出电压 通过外部分压电阻&#xff08;R1和R2&#xff09;调节输出电压&#xff0c;范围为1.25V至13.8V。输出电压公式&#…

知名流体控制解决方案供应商“永盛科技”与商派ShopeX达成B2B商城项目合作

2025年6月&#xff0c;全球知名的工业流体控制解决方案服务商——永盛科技&#xff08;股票&#xff1a;874497&#xff09;&#xff0c;与商派ShopeX正式达成B2B商城项目合作。 此次合作将共同推动永盛科技B2B业务的数字化变革&#xff0c;提高B2B业务运营效率&#xff0c;同…

jvm简单八股

1、jvm中内存分为那几个区域&#xff0c;1.7和1.8 jvm 中主要有 程序计数器、虚拟机栈、本地方法栈、堆、方法区、直接内存。 线程私有的有&#xff1a;程序计数器、虚拟机栈、本地方法栈 线程共有的有&#xff1a;堆、方法区、直接内存 堆空间又可以分为&#xff1a;新时代、…

contOS7安装docker命令及yum源更换为国内源

docker介绍 Docker是一个开源的容器化平台,通过将应用程序及其依赖打包成轻量级、可移植的容器,确保开发、测试和部署环境的一致性。Docker的核心概念包括容器、镜像、Dockerfile和镜像仓库。容器是轻量级的虚拟化技术,共享宿主机内核但保持独立运行环境,启动快且资源占用少…

SpringBoot集成Redis-6.x版本流程

SpringBoot集成Redis是我们常见的功能&#xff0c;今天我们分享一下&#xff1a; 前言&#xff1a; 1、pom包引用 <!-- Redis Starter (默认使用 Lettuce) --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boo…

zookeeper Curator(3):Watch事件监听

文章目录 Curator API 常用操作 Watch事件监听NodeCachePathChildrenCacheTreeCache 本章代码已分享至Gitee: https://gitee.com/lengcz/curator01 Curator API 常用操作 Watch事件监听 zookeeper 允许用户在指定节点上注册一些Watcher &#xff0c;并且在一些特定事件触发的时…

多模态融合相机L3CAM

多模态融合相机L3CAM L3CAM是Beamagine公司推出的多模态传感器融合技术&#xff0c;结合了激光雷达&#xff08;LiDAR&#xff09;和可见光摄像头&#xff0c;旨在为自动驾驶、工业机器人和其他需要精确环境感知的应用场景提供高效、安全的解决方案。 L3CAM技术参数 L3CAM结合…

结构化思维

前言 洞悉分析方法论 系统解决管理问题 1 构建问题分析框架 1.1 摘要 &#xff08;1&#xff09;何谓问题分析和解决&#xff1f; &#xff08;2&#xff09;问题分析和解决的基本原则 1.2 什么是问题分析与决策&#xff1f; 1.3 问题解决者需要具备的四种能力 &#xf…

什么是数字签名(ECDSA)?

数字签名是区块链、数字身份认证和安全通信的核心技术之一&#xff0c;ECDSA&#xff08;椭圆曲线数字签名算法&#xff09;是目前最常见、最主流的数字签名算法之一&#xff0c;尤其在区块链系统&#xff08;如比特币、以太坊、EOS&#xff09;中广泛应用。 一、什么是数字签名…

深入剖析AI大模型:Dify的介绍

今天介绍的内容&#xff0c;跟大模型开发还是息息相关的。俗话说&#xff1a;有人的地方就是江湖&#xff01;对于我们技术其实也一样&#xff0c;一个新技术的出现&#xff0c;自然会衍生出相应的生态圈。今天的文字只是介绍&#xff0c;以后会有专门的实操篇&#xff0c;主要…

Open VSX Registry关键漏洞使攻击者可完全控制Visual Studio Code扩展市场

网络安全研究人员近日披露了 Open VSX Registry&#xff08;"open-vsx[.]org"&#xff09;中存在的一个关键漏洞。若被成功利用&#xff0c;攻击者可能完全控制整个 Visual Studio Code 扩展市场&#xff0c;造成严重的供应链风险。 漏洞详情与潜在影响 Koi Securi…

Python从入门到高手9.1节-Python中的字典类型

目录 9.1.1 理解字典类型 9.1.2 字典的类型名 9.1.3 字典的定义 9.1.4 字典的主要性质 9.1.5 好好学习&#xff0c;天天向上 9.1.1 理解字典类型 在日常生活中&#xff0c;我们常常会接触到“字典”这种数据类型&#xff0c;例如一本书籍的目录结构&#xff0c;在目录结构…

封禁UDP端口提高防御能力分析

封禁不必要的 UDP 端口 确实可以在一定程度上提高系统的防御力&#xff0c;但这并不是一个绝对的“好”或“坏”的问题&#xff0c;需要根据具体情况来判断。以下是详细分析&#xff1a; ✅ 封禁 UDP 端口能提高防御力的原因 (优点) 减少攻击面&#xff1a; 服务暴露&#xff…

阿里云-arms监控

监控java应用 若是容器集群环境&#xff0c;则选择容器服务环境 手动安装方式&#xff0c;是手动把 agent的jar包放到 ecs服务器&#xff0c;然后运行个人的spring boot服务时&#xff0c;加上一些参数&#xff0c;将agent也启动运行 手动集成-添加agent 监控的是ecs中的java应…

c语言 char *str = ““ 和 char *str = NULL 以及 char str[] = {} 区别

目录 前言char *str "" 和 char *str NULL 区别char *str NULL 和 char str[] {} 区别char *str "" 和 char str[] {} 区别char *str "" 和 const char *str "" 区别 前言 C语言指针的使用非常常见且易出错&#xff0c;这里对…

小程序入门: tab bar 实现多页面快速切换效果

在小程序开发中&#xff0c;tab bar 是实现多页面快速切换的关键组件&#xff0c;能极大提升用户体验。上一篇我们完成了基础配置&#xff0c;今天深入探索&#xff0c;打造更丰富实用的 tab bar 效果。 实现目标 这次要在小程序底部创建包含 “首页”“消息”“联系我们” 三…