首頁 > 軟體

MySQL8.0連線協定及3306、33060、33062埠的作用解析

2022-08-17 14:03:17

一、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 選項的值。

以上為個人經驗,希望能給大家一個參考,也希望大家多多支援it145.com。 


IT145.com E-mail:sddin#qq.com