MySQL多实例的环境下,服务器端本地连接到指定实例的问题(sock方式连接)
涉及到sock连接的问题。
为了测试MySQL的某些个特性,在一个机器上安装了多个MySQL的实例,如下截图,有两个实例,一个端口是8000,一个端口是8001。
在使用mysql -uroot -p -P8001连接至端口号为8001的MySQL实例的时候,show variables like '%port%'却显示连接的是8000这个实例,莫名其妙?
笔者一开始也被这个问题吓了一跳,后面才弄清楚是TCP连接和sock连接的问题。

这涉及到一个sock连接的问题,本地(也就是服务器端)连接到MySQL实例的时候,
默认是使用的sock的方式连接的,当没有指定sock文件的情况下,而默认的sock文件是从/tmp/mysql.sock路径下找的。
也就是说,在服务器端连接MySQL实例的时候(未指定主机地址,这里是-h127.0.0.1),
1,默认是以sock的方式连接至MySQL实例的
2,在未指定主机地址的情况下,也即-h参数,是会忽略端口号的参数值,也即-P的值。
比如使用上述的mysql -uroot -p -P8001,的方式连接至数据库实例,默认是用sock的方式连接(没有指定sock参数 -S,默认/tmp/mysql.sock),且忽略端口号参数,也即-P8001
比如如下截图,-P指定了一个根本不存在的端口号,仍然正常地连接到了一个实例,具体是哪个实例,取决于默认/tmp/mysql.sock指向哪个实例(多实例的情况下)

sock的原理也不难理解:sock文件本身就是记录了一个MySQL实例的进程id,mysql命令在本地直接通过sock中的进程id连接至该实例,因为可以忽略端口号。
如何在服务器本地连接至具体的实例?
1,连接命名中明确指定sock文件的路径,无须指定端口号( mysql -uroot -p -S/***/mysql.sock),即便指定端口号,也会被忽略

2,指定端口号+主机地址(指定TCP)的方式连接:mysql -uroot -p -P*** -h127.0.0.1

记下来,一台机器上装了N多个实例,一不小心又掉坑里了……
在本地也即服务器端连接至MySQL实例的时候,未指定主机地址的情况下,默认是以sock的方式连接的,而未指定sock的时候,又是按照默认的路径找对应的sock文件
此时会忽略连接命令中的端口号参数,不注意的情况下可能会造成一些凌乱。
仅仅是从服务器端连接的时候会出现类似情况,如果是从客户端(非服务器端)连接的话,肯定会指定IP,一旦指定了IP,对应的端口号就生效了,因此客户端不会发生类似情况。
一直对某些默认的配置有所忌惮,实际上是掩盖了很多问题,弄不好就掉坑理了。
MySQL多实例的环境下,服务器端本地连接到指定实例的问题(sock方式连接)的更多相关文章
- Windows环境下,本地Oracle创建dblink连接远程mysql
前言 我的情况是,本地安装了oracle(安装完成后带有SQL Developer,不需要再安装instantclient),创建dblink去连接远程的mysql.有些朋友可能是 本地使用PL\SQ ...
- 《高可用MySQL》1 – Windows环境下压缩版MySQL安装
近日在读O’REILIY系列的<高可用MySQL>, 自然少不了主从(Master-Slave)配置和横向扩展相关的内容.Master-Slave这东西吧,在许多公司都是标配,开发中基本天 ...
- [原]我在Windows环境下的首个Libevent测试实例
libevent对Windows环境也有很好的支持,不过初次学习和编译libevent简单实例,总是有一些陌生感的,只有成功编译并测试了一个实例,才会有恍然大悟的感觉.下面将要讲到的一个实例是我从网上 ...
- Mysql迁移工具在生产环境下的使用
在产品迭代开发发布过程中,由于业务需求的增加,数据库难免会有结构调整等操作. 在每个版本发布过程中怎么控制每个版本server端程序与数据库版本保持一致,以及数 据库升级.回滚等操作. 本博文宅鸟将向 ...
- MySQL分库分表环境下全局ID生成方案 转
在大型互联网应用中,随着用户数的增加,为了提高应用的性能,我们经常需要对数据库进行分库分表操作.在单表时代,我们可以完全依赖于数据库的自增ID来唯一标识一个用户或数据对象.但是当我们对数据库进行了分库 ...
- MySQL分库分表环境下全局ID生成方案
在大型互联网应用中,随着用户数的增加,为了提高应用的性能,我们经常需要对数据库进行分库分表操作.在单表时代,我们可以完全依赖于数据库的自增ID来唯一标识一个用户或数据对象.但是当我们对数据库进行了分库 ...
- 【转】MySQL分库分表环境下全局ID生成方案
转载一篇博客,里面有很多的知识和思想值得我们去思考. —————————————————————————————————————————————————————————————————————— 在大 ...
- MySQL - MySQL++在c++11环境下接口设计
安装官方提供的mysqlconnect后,可以使用mysql++库,在官方的C API上再次做一个c++面向对象封装. 这里mysql++的安装依赖于mysql-connector-c.安装参考:ht ...
- 在mysql 5.6的环境下修改生产环境的表结构(在线ddl) ----工具pt-osc
随着需求的变化越来越快,在线修改表结构变得越来越需要. 在mysql5.6以前,mysql的修改表结构操作会锁表,这样就会造成开发人员或者DBA修改表结构必须要等到凌晨流量谷值或者停服修改.这样必定会 ...
随机推荐
- from组件
目录 一.生成页面可用的 HTML标签 二.对用户提交的数据进行校验 三. form 综合示例: 四. modelform(自动根据字段生成表单) 五.modelformset 一.生成页面可用的 H ...
- 基于scrapy源码实现的自定义微型异步爬虫框架
一.scrapy原理 Scrapy 使用了 Twisted异步网络库来处理网络通讯.整体架构大致如下 Scrapy主要包括了以下组件: 引擎(Scrapy)用来处理整个系统的数据流处理, 触发事务(框 ...
- volatile和不加volatile的区别
http://blog.chinaunix.net/uid-25100840-id-3067899.html 对于一个地址,如果加上了volatile参数,这个地址也就不会经过编译器优化,也就是说这个 ...
- VsCode配置go环境及插件安装
在vscode中安装go插件. 安装git. 在%GOPATH%\src\目录下,建立golang.org文件夹,并再新建x文件夹. 目录为 "%GOPATH\src\golang.org\ ...
- install chrome and chrome driver on ubuntu
sudo apt install python-minimal # python 2.7.xsudo apt install python-pip # https://www.ubuntuupdate ...
- spring boot项目中处理Schedule定时任务
项目中,因为使用了第三方支付(支付宝和微信支付),支付完毕后,第三方支付平台一般会采用异步回调通知的方式,通知商户支付结果,然后商户根据通知内容,变更商户项目支付订单的状态.一般来说,为了防止商户项目 ...
- 更新 TeX Live 软件包
这个 TeX Live 软件,你得时常更新一下,不然会遇到一些由软件包自身 Bug 导致的编译问题.比如,这次我使用 Beamer 软件包写演示文稿,就遇到问题了,结果发现是软件包自身存在的问题.安装 ...
- [蓝桥杯]PREV-13.历届试题_网络寻路
题目描述: 代码如下: #include <stdio.h> #include <stdlib.h> #include <string.h> #define LEN ...
- rediscluster安装
Redis 3.2.1集群搭建 一.概述 Redis3.0版本之后支持Cluster. 1.1.redis cluster的现状 目前redis支持的cluster特性: 1):节点自动发现 2) ...
- LeetCode【101. 对称二叉树】
对称二叉树,就是左节点的左节点等于右节点的右节点,左节点的右节点等于右节点的左节点. 很自然就想到迭代与递归,可以创建一个新的函数,就是另一个函数不断的判断,返回在主函数. class Solutio ...