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

2022-08-17 12:15:58
目录
一、MySQL连接层二、连接协议三、本地和远程连接协议:TCP/IP

一、MySQL连接层

连接层为每个连接维护一个线程。该线程处理查询执行。>

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

    TCP/IPUNIX 套接字共享内存命名管道

    如下图所示:

    二、连接协议

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

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

    除了旧版>

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

    mysqlx 变量的一些示例:

      • mysqlx• mysqlx_bind_address• mysqlx_max_connections• mysqlx_port• mysqlx_socket

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

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

      1、是用于连接>

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

      以上为个人经验,希望能给大家一个参考,也希望大家多多支持易采站长站。