我的编程空间,编程开发者的网络收藏夹
学习永远不晚

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

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

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

一、MySQL连接层

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

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

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

如下图所示:

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

二、连接协议

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

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

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

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

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 选项的值。

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

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

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

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

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

目录一、mysql连接层二、连接协议三、本地和远程连接协议:TCP/IP一、MySQL连接层连接层为每个连接维护一个线程。该线程处理查询执行。 在连接可以开始发送 SQL 查询之前,连接由验证用户名、密码和客户端主机。连接层通过多种连接
2022-08-17

编程热搜

目录