当前位置: 首页 > news >正文

MySQL笔记-mysql -hlocalhost和mysql -h127.0.0.1的不同

背景

我这边有台Linux的机器,搭建了MySQL,端口号是1万开头(非3306),因业务需求,需要再搭建一台MySQL,端口号为3306的,为了方便,我搭建了一个docker版MySQL,启动时做了HOST,端口是3306。

有意思的地方来了,当我输入

mysql -hlocalhost

时,他连接到宿主机(端口号1万开头的那个mysql了,查日志查到的)

当输入

mysql -h127.0.0.1

时就会访问到docker里面的mysql。

应用程序里面也是如此,当输入的是localhost时,连接到宿主机。当输入127.0.0.1时连接到docker。

一开始以为是iptables转发是不是有问题,就强制写了一条nat转发127.0.0.1到docker网关的规则,但还是不行。

对此十分震惊,难道对于mysql这个命令,官方难道是做了什么优化?简直可怕,对此学习了下,受益匪浅。

结论

在使用 MySQL 时,mysql -h localhost 和 mysql -h 127.0.0.1 之间的主要区别在于连接的方式:

mysql -h localhost
  • 当使用 localhost 时,MySQL 客户端会尝试通过 Unix 域套接字(Unix socket)来连接数据库。这种方式通常比通过网络更快,因为它不需要网络协议的开销。
  • 在Linux系统中,这种连接方式通常是通过 /var/run/mysqld/mysqld.sock 等路径的 socket 文件进行的。
mysql -h 127.0.0.1
  • 使用 127.0.0.1 时,MySQL 客户端会通过 TCP/IP 协议进行连接。这意味着它会将数据包发送到 IP 地址 127.0.0.1,并通过网络层建立连接。
  • 虽然 127.0.0.1 也是指本机,但实现方式不同。

总结

  • localhost 会优先使用 Unix 域套接字连接。
  • 127.0.0.1 会使用 TCP/IP 连接。

要让 mysql -h localhost 通过 TCP/IP 进行连接而不是使用 Unix 域套接字,你可以在连接命令中指定 IP 地址,这里有几种方法可以实现这个目标:

使用 --protocol 参数

可以使用 --protocol 参数来强制 MySQL 客户端使用 TCP/IP 连接。运行以下命令:

mysql -h localhost --protocol=TCP -u username -p

http://www.xdnf.cn/news/192277.html

相关文章:

  • C语言教程(十八):C 语言共用体详解
  • 基于Python的携程国际机票价格抓取与分析
  • 【MCP教程系列】如何自己打包MCP服务并部署到阿里云百炼上【nodejs+TypeScript】搭建自己的MCP【Cline】
  • 排序算法详解笔记
  • Fiddler+Yakit实现手机流量抓包和小程序抓包
  • 【ESP32】st7735s + LVGL移植
  • 输出圆周率的前n位数字
  • 出口转内销如何破局?“金融+数智供应链”模式含金量还在上升
  • OpenHarmony - 小型系统内核(LiteOS-A)(十三),LMS调测
  • 文献阅读(一)植物应对干旱的生理学反应 | The physiology of plant responses to drought
  • 早投早发表!3本 Nature 新子刊已开放投稿系统!
  • 【前端】从零开始的搭建顺序指南(技术栈:Node.js + Express + MongoDB + React)book-management
  • 97AB-ASEMI机器人功率器件专用97AB
  • transformer-实现单层encoder_layer
  • JavaScript性能优化实战(6):网络请求与资源加载优化
  • 优化MySQL性能:主从复制与读写分离实践指南
  • 设计模式(行为型)解释器模式
  • 用Python做有趣的AI项目5:AI 画画机器人(图像风格迁移)
  • 蓝牙耳机开发--TWS蓝牙耳机双向通信充电盒设计
  • 0805登录_注册_token_用户信息_退出-网络ajax请求2-react-仿低代码平台项目
  • DeepSeek+Dify之三工作流引用知识库案例
  • 第十四章-PHP与HTTP协议
  • Async/Await 必须使用 try/catch 吗?
  • 大模型如何应对内容安全:原理、挑战与技术路径探讨
  • Webug4.0通关笔记02- 第2关布尔注入与第3关延时注入
  • ubantu18.04(Hadoop3.1.3)之Flink安装与编程实践(Flink1.9.1)
  • PostgreSQL与MySQL哪个适合做时空数据分析?
  • 安达发|高效智能塑料切割数控系统 - 全自动化软件解决方案
  • 信创时代技术栈选择与前景分析:国产替代背景下的战略路径与实践指南
  • 穷鬼计划:react+tailwindcss+vercel