MySQL8.0连接协议及3306、33060、33062端口的作用解析

目录
  • 一、MySQL连接层
  • 二、连接协议
  • 三、本地和远程连接协议:TCP/IP

一、MySQL连接层

连接层为每个连接维护一个线程。该线程处理查询执行。 在连接可以开始发送 SQL 查询之前,连接由验证用户名、密码和客户端主机。

连接层通过多种连接协议接受来自应用程序的连接:

  • TCP/IP
  • UNIX 套接字
  • 共享内存
  • 命名管道

如下图所示:

二、连接协议

协议在客户端库和驱动程序中实现。

连接协议的速度因本地设置而异。

除了旧版 MySQL 经典协议之外,MySQL X 协议还引入了MySQL 5.7.12 并在 MySQL 8.0 中默认启用。

MySQL 使用 TCP 将消息从客户端通过网络传输到服务器,可以使用以 mysqlx 为前缀的变量和选项来配置 MySQL X 协议。

mysqlx 变量的一些示例:

  • • mysqlx
  • • mysqlx_bind_address
  • • mysqlx_max_connections
  • • mysqlx_port
  • • mysqlx_socket

三、本地和远程连接协议:TCP/IP

TCP/IP(传输控制协议/互联网协议):

1、是用于连接 Internet 上的主机的连接协议套件

2、使用 IP 地址或 DNS 主机名来识别主机

3、使用 TCP 端口号来标识每个主机上的特定服务

MySQL 默认 TCP 端口号:

1、3306 用于 MySQL Classic 协议(服务器端口选项)

2、33060 用于 MySQL X 协议(服务器 mysqlx_port 选项)

3、33062 用于使用 MySQL Classic 协议的管理连接(服务器 admin_port 选项)

修改my.cnf

admin_address='localhost'

修改前后对比:

[root@hadoop1 ~]# mysql -e "show variables like 'admin%'";
+------------------------+-----------------+
| Variable_name          | Value           |
+------------------------+-----------------+
| admin_address          |                 |
| admin_port             | 33062           |
| admin_ssl_ca           |                 |
| admin_ssl_capath       |                 |
| admin_ssl_cert         |                 |
| admin_ssl_cipher       |                 |
| admin_ssl_crl          |                 |
| admin_ssl_crlpath      |                 |
| admin_ssl_key          |                 |
| admin_tls_ciphersuites |                 |
| admin_tls_version      | TLSv1.2,TLSv1.3 |
+------------------------+-----------------+
[root@hadoop1 ~]# systemctl restart mysqld.service
[root@hadoop1 ~]# mysql -e "show variables like 'admin%'";
+------------------------+-----------------+
| Variable_name          | Value           |
+------------------------+-----------------+
| admin_address          | localhost       |
| admin_port             | 33062           |
| admin_ssl_ca           |                 |
| admin_ssl_capath       |                 |
| admin_ssl_cert         |                 |
| admin_ssl_cipher       |                 |
| admin_ssl_crl          |                 |
| admin_ssl_crlpath      |                 |
| admin_ssl_key          |                 |
| admin_tls_ciphersuites |                 |
| admin_tls_version      | TLSv1.2,TLSv1.3 |
+------------------------+-----------------+
[root@hadoop1 ~]#

成功登录:

[root@hadoop1 ~]# mysql -P 33062
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 17
Server version: 8.0.28 MySQL Community Server - GPL
Copyright (c) 2000, 2022, Oracle and/or its affiliates.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>

网络监听情况:

[root@hadoop1 ~]# netstat -anltp | grep 33062
tcp        0      0 127.0.0.1:33062         0.0.0.0:*               LISTEN      1104641/mysqld
[root@hadoop1 ~]#

设置最大连接数方便测试:

mysql> set global max_connections = 1;
Query OK, 0 rows affected (0.00 sec)

重新连接:

[root@hadoop1 ~]# mysql
ERROR 1040 (HY000): Too many connections
[root@hadoop1 ~]# mysql -P 33062 --protocol tcp
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 21
Server version: 8.0.28 MySQL Community Server - GPL
Copyright (c) 2000, 2022, Oracle and/or its affiliates.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>

从 MySQL 8.0.14 开始,MySQL 服务器允许专门为管理连接配置 TCP/IP 端口。这为用于普通连接的网络接口上允许的单个管理连接提供了一种替代方法,即使已经建立了 max_connections 连接。只有在启动时设置了 admin_address 系统变量以指示管理接口的 IP 地址时,该接口才可用。如果未指定 admin_address 值,则服务器不维护管理界面。

只有SERVICE_CONNECTION_ADMIN 权限的用户才允许连接。没有限制管理连接的数量。 MySQL 服务器使用 DNS(域名系统)来解析使用 TCP/IP 协议连接的客户端主机的名称,并将它们存储在主机缓存中。对于在名称解析过程中出现性能问题的大型网络,请使用 --skip-name-resolve 选项禁用 DNS 或增加 --host-cache-size 选项的值。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • MySQL 8.0新特性 — 管理端口的使用简介

    前言 下面这个报错,相信大多数童鞋都遇见过:那么碰到这个问题,我们应该怎么办呢?在MySQL 5.7及之前版本,出现"too many connection"报错,超级用户root也无法登录上去,除了重启实例,没有其他更好的解决办法:不过在MySQL 8.0版本中,是对连接管理做了一些优化,下面我们就来看一下. ERROR 1040 (HY000): Too many connections 连接管理 在MySQL 8.0版本中,对连接管理这一块,是先后做了两个比较大的改变:一个是允许

  • Navicat出现无法远程连接MySql服务器问题的解决办法

    Navicat无法远程连接MySql服务器问题的解决方法写在前面: 操作系统:中标麒麟4.0: 数据库:MySQL5.7.26: JDK:采用中标麒麟系统自带的openjdk: 客户端工具:Navicat: 前置条件: MySQL服务安装完毕: 情景: 安装好mysql,本地访问正常,但同一个局域网内的机器都无法访问该服务器上的mysql数据库: 原因: mysql默认是不可以通过远程机器访问的,只允许本地访问,通过下面的配置可以开启远程访问: 排查思路: mysql设置远程访问主要从以下三个方

  • ubuntu 15.04下mysql开放远程3306端口

    ubuntu 15.04开放mysql远程3306端口,以下所有操作在terminal(终端)中执行. 首先查看端口是否打开 netstat -an|grep 3306 此图为开启3306端口的截图,之前显示为. . . 127.0.0.1:3306 . . . 打开mysql配置文件vi /etc/mysql/mysql.conf.d/mysqld.cnf 将bind-address = 127.0.0.1注销​ 截图最下面一行注销 重启动ubuntu 再次查看端口是否打开 netstat -

  • MySQL8.0连接协议及3306、33060、33062端口的作用解析

    目录 一.MySQL连接层 二.连接协议 三.本地和远程连接协议:TCP/IP 一.MySQL连接层 连接层为每个连接维护一个线程.该线程处理查询执行. 在连接可以开始发送 SQL 查询之前,连接由验证用户名.密码和客户端主机. 连接层通过多种连接协议接受来自应用程序的连接: TCP/IP UNIX 套接字 共享内存 命名管道 如下图所示: 二.连接协议 协议在客户端库和驱动程序中实现. 连接协议的速度因本地设置而异. 除了旧版 MySQL 经典协议之外,MySQL X 协议还引入了MySQL

  • java连不上mysql8.0问题的解决方法

    本文为大家分享了java连不上MySQL8.0问题集合,供大家参考,具体内容如下 问题1:Client does not support authentication protocol requested by Server:- 问题2:Unknown initial character set index '255' received from server- 问题3:MySQL8.0连接必要url语句 问题4:调用方法重复 运行问题1: 解决方法:(3句注意分号,wy123456是我数据库的

  • mysql8.0.21下载安装详细教程

    官网地址:https://www.mysql.com/ 安装建议:尽量不要用.exe进行安装,用压缩包安装,对日后的卸载更为方便 下载地址:https://dev.mysql.com/downloads/mysql/ 1.下载得到zip压缩包 2.解压到要安装的目录 我这里是:D:\Program File\MySQL\mysql-8.0.21-winx64,增加了data目录 3.添加环境变量 我的电脑–>属性–>高级–>环境变量 选择path添加:mysql安装目录下的bin文件夹地

  • Windows7下安装使用MySQL8.0.16修改密码、连接Navicat问题

    在安装MySQL时遇到几个问题,网上查找的答案大同小异,并没有很好的解决我的问题,完成之余记录下来方便以后查看. 1.官网下载8.0.16版本MySQL 2.解压缩并将解压的文件放在C:\Program Files\MySQL下 3.配置环境变量,将C:\Program Files\MySQL\bin 添加到系统变量path中 4.添加配置文件,在MySQL根目录下创建my.ini 文件内容如下,修改'basedir='.'datadir='地址 [mysqld] # 设置3306端口 port

  • 在IDEA的maven项目中连接并使用MySQL8.0的方法教程

    首先看一下我的基本的开发环境: 操作系统:MacOS 10.13.5编辑器:IDEA 2018.3其他:MySQL8.0.15.Maven 3.3.9.JDK 1.8 好,下面就正式开始: 第一步:在IDEA中新建一个maven项目 1.使用骨架创建maven项目,此处选择:maven-archetype-quickstart 2.填入GroupId和ArtifactId 3.第一个选中maven安装的文件夹,第二个选中maven安装文件夹中的conf/settings.xml,第三个如果set

  • Python3连接Mysql8.0遇到的问题及处理步骤

    最近在使用Python开发系统,需连接mysql数据库,我用的是Python3连接MySQL8.0,其中老是报错以下问题: 网上给了各种各样的方法,大多是通过各种方式修改密码. 最简单的方法是更换了root密码的认证方式解决的,新版mysql使用的caching_sha2_password,换成mysql_native_password我就可以连上了. 步骤是在cmd命令行连接mysql(管理员身份运行cmd)  进入cmd的命令行之后,输入cd+bin目录的地址,访问mysql的bin目录.通

  • mysql8.0.20安装与连接navicat的方法及注意事项

    需要注意的地方 1.首先需要在mysql的安装目录下新建一个my.ini文件,内容如下: [client] # 设置mysql客户端默认字符集 default-character-set=utf8 [mysqld] # 设置3306端口 port = 3306 # 设置mysql的安装目录 basedir=C:\\web\\mysql-8.0.11 # 设置 mysql数据库的数据的存放目录,MySQL 8+ 不需要以下配置,系统自己生成即可,否则有可能报错 # datadir=C:\\web\

  • VS2019连接mysql8.0数据库的教程图文详解

    1.首先准备好VS2019以及mysql数据库,两者都可以去官网下载,我们直接描述连接过程. 2.连接: 第一步:打开mysql的安装目录,我本地的安装目录如下:(注意是否有include和lib文件夹) 第二步:打开VS2019,新建一个空工程. 第三步:右击工程名,打开属性页: 第四步:打开VC++目录,在包含目录中,将mysql安装文件中的include文件的路径添加到这里: 第五步:还是在属性页上,打开C/C++,选择常规,和上一步一样,在附加包含目录中将mysql文件中的include

  • 关于MyBatis连接MySql8.0版本的配置问题

    在学习mybatis时,遇到了一个错误,错误如下: Error querying database.  Cause: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure 错误原因: 本地使用的数据库版本为MySQL8.0 在pom.xml配置文件中导入MySQL的jar包版本为 因为本地数据库版本与导入MySQL的jar包版本不一致引起的错误 解决办法: [1] 本地安装相应版本

  • Java连接MySQL8.0 JDBC的详细步骤(IDEA版本)

    一.导入jar包 1.下载jar包:https://dev.mysql.com/downloads/ 2.导入 在项目文件夹下新建一个名为lib的文件夹 将下载好的jar包放入lib文件夹,然后右击lib文件夹,选择Add as Library...,然后点击ok 二.代码部分 1.加载驱动 Class.forName("com.mysql.cj.jdbc.Driver"); 2.用户信息和url String url = "jdbc:mysql://localhost:33

随机推荐