MySQL 服务端口大全

介绍

MySQL默认服务端口3306/TCP都不会陌生,但MySQL提供服务只有单纯的这个端口吗。在8.0版本默认启动的时候会发现,出现新的端口。

可以说MySQL使用的端口数量取决于所启用的特性、所使用的组件、应用程序连接的方式以及环境的其他方面。

按照官方说明 除了服务端口3306,一些MySQL特性使用的TCP端口在Linux系统(32768 - 61000)允许的本地端口范围内。
MySQL官方提供的端口服务脑图:

为了避免与其他应用程序的端口冲突,有必要了解这些端口作用。

端口分类

1.Client & Driver Connection

3306端口是经典MySQL协议(端口)的默认端口。MySQL客户端、MySQL连接器和实用程序(如mysqldump和mysqlpump)使用。X协议的端口(mysqlx_port),被MySQL Shell, MySQL连接器和MySQL路由器等客户端支持,通过将经典MySQL协议使用的端口乘以10来计算。例如,如果经典的MySQL协议端口是默认值3306,那么X协议端口是33060。
默认端口/协议

默认端口/协议 SSL或其他加密 说明
3306/TCP Yes 3306是经典MySQL协议的默认端口。
33060/TCP Yes X协议的端口(mysqlx_port)。
 
 

mysql> SHOW VARIABLES LIKE 'port'; mysql> SHOW VARIABLES LIKE 'mysqlx_port';

  • 配置
    如,需要关闭X协议端口:
#配置文件
[mysqld]
mysqlx=0

##mysqld启动参数
--skip-mysqlx

2.MySQL Administrative Connection

MySQL 8.0.14开始,服务器允许专门为管理连接配置TCP/IP端口。

默认端口/协议 SSL或其他加密 说明
33062/TCP (default) Yes 专门为MySQL管理连接配置的端口。
  • 配置
    必须配合admin_address&admin_port 同时配置才能生效。
[mysqld]
admin_address=127.0.0.1
admin_port=33064
  • 访问权限
shell> mysql --port 33062 -uroot -p
ERROR 1227 (42000): Access denied; you need (at least one of) the SERVICE_CONNECTION_ADMIN privilege(s) for this operation

admin用户需要SERVICE_CONNECTION_ADMIN 权限

 
 

mysql > GRANT SERVICE_CONNECTION_ADMIN ON *.* to 'root'@'localhost'; Query OK, 0 rows affected (0.01 sec) mysql > flush privilegs;

  • create_admin_listener_thread系统变量
    使DBA能够在启动时选择管理接口是否有自身的独立线程。默认值为OFF;也就是说,主接口上普通连接的管理器线程也处理管理接口的连接。
 
 

mysql> show variables like 'create_admin_listener_thread'; +------------------------------+-------+ | Variable_name | Value | +------------------------------+-------+ | create_admin_listener_thread | OFF | +------------------------------+-------+ 1 row in set (0.01 sec)

  • 管理接口支持加密连接,并使用主接口TLS上下文,通过单独配置证书和密钥文件。
[mysqld]
admin_address=127.0.0.1
admin_ssl_ca=admin-ca.pem
admin_ssl_cert=admin-server-cert.pem
admin_ssl_key=admin-server-key.pem

3.MySQL Shell

MySQL shell 脚本交互端口。通过脚本有效协调功能。

默认端口/协议 SSL或其他加密 说明
3306/TCP Yes MySQL客户端连接使用。
33060/TCP Yes MySQL客户端到MySQL服务器(X协议)。
33061/TCP Yes MySQL Shell在InnoDB集群配置期间用于检查服务器的端口。

4.MySQL Workbench

MySQL官方提供的客户端链接工具,目前看文件比较大,包含诸多功能。

默认端口/协议 SSL或其他加密 说明
3306/TCP Yes MySQL客户端连接使用。
22/TCP Yes 通过SSH隧道连接。

5.MySQL Router Connection

MySQL实现读写分离,Innodb Cluster自动路由中间件。

默认端口/协议 SSL或其他加密 说明
6446/TCP Yes MySQL路由器的读写SQL。
6447/TCP Yes MySQL路由器的只读SQL。
6448/TCP Yes MySQL路由器的读写API调用。
6449/TCP Yes MySQL路由器的只读调用。
3306/TCP Yes MySQL客户端连接使用。
33060/TCP Yes MySQL客户端到MySQL服务器(X协议)。

6.High Availability

MySQL高可用复制使用的端口。目前复制集群有 主从,Innodb Cluster,NDB。

默认端口/协议 SSL或其他加密 说明
3306/TCP Yes MySQL复制。
33061/TCP Yes MySQL Group Replication内部通信端口。

#InnoDB集群配置端口

[mysqld]
plugin_load_add='group_replication.so'
group_replication_group_name="aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa"
group_replication_local_address= "m1:33061"
group_replication_group_seeds= "m1:33061,s1:33061,s2:33061"

7.MySQL Enterprise External Authentication

对接Windos AD认证的服务端口。

默认端口/协议 SSL或其他加密 说明
389/TCP Yes MySQL企业版LDAP端口 (Active Directory)。

8.MySQL Enterprise Backup

企业版本mysqlbackup工具,所用到的端口。

默认端口/协议 SSL或其他加密 说明
3306/TCP Yes mysql服务端口。
443/TCP Yes Amazon S3,Oracle Object Store 备份服务端口。

9.Key Management

第三方key Service服务端口。

默认端口/协议 SSL或其他加密 说明
443/TCP Yes Key Services-AWS key管理服务(AWS KMS)。

10.Memcached Protocol

很少使用的Memcached插件提供服务端口。

默认端口/协议 SSL或其他加密 说明
11211/TCP Yes InnoDB引擎 memcached Plugin插件服务端口。

memcache使用包含innodb_memcached_config.sql 脚本和 PLUGIN libmemcached.so文件

shell> netstat -lnp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 127.0.0.1:33062         0.0.0.0:*               LISTEN      42700/mysqld        
tcp        0      0 0.0.0.0:11211           0.0.0.0:*               LISTEN      42700/mysqld        
。。。           

服务器端口分配

为了避免与其他应用程序的端口冲突,可以考虑配置ip_local_port_range参数来限制自动端口分配可用的端口范围,或者配置ip_local_reserved_ports参数来预留MySQL使用的端口。查看当前的ip_local_port_range和ip_local_reserved_ports配置:

# semanage port -a -t http_port_t -p tcp 8909 //开启非标准端口
$> semanage port -a -t mysqld_port_t -p tcp <port_open_to_mysqld>

#避免与其他应用程序的端口冲突:
$ cat /proc/sys/net/ipv4/ip_local_port_range
$ cat /proc/sys/net/ipv4/ip_local_reserved_ports

除此之外也可以通过防火墙进行配置。

总结

从安全的角度来看,应该只在允许系统组件通信时才打开端口。在管理端口时,应始终遵循最小权限原则,即用户、进程、程序和其他系统组件只能访问其合法目的所需的信息和资源。

因为是全世界已知公认的的端口,特别是在公网上提供的MySQL服务时,为了减少被攻击,建议替换一些默认端口。 如:3306 改成3380端口。

参考

https://dev.mysql.com/doc/mysql-port-reference/en/mysql-ports-reference-tables.html

猜你喜欢

转载自blog.csdn.net/dreamyuzhou/article/details/128285878
今日推荐