MySQL实战
作者 | 丁奇出处 | 极客时间《MySQL 实战 45 讲》专栏我们经常说,看一个事儿千万不要直接陷入细节里,你应该先鸟瞰其全貌,这样能够帮助你从高维度理解问题。同样,对于 MySQL 的学习也是这...
2024.11.12MySQL默认服务端口3306/TCP都不会陌生,但MySQL提供服务只有单纯的这个端口吗。在8.0版本默认启动的时候会发现,出现新的端口。
可以说MySQL使用的端口数量取决于所启用的特性、所使用的组件、应用程序连接的方式以及环境的其他方面。
按照官方说明 除了服务端口3306,一些MySQL特性使用的TCP端口在Linux系统(32768 - 61000)允许的本地端口范围内。MySQL官方提供的端口服务脑图:
为了避免与其他应用程序的端口冲突,有必要了解这些端口作用。
端口分类1.Client & Driver Connection3306端口是经典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-mysqlx2.MySQL Administrative ConnectionMySQL 8.0.14开始,服务器允许专门为管理连接配置TCP/IP端口。
默认端口/协议
SSL或其他加密
说明
33062/TCP (default)
Yes
专门为MySQL管理连接配置的端口。
配置必须配合admin_address&admin_port 同时配置才能生效。[mysqld]admin_address=127.0.0.1admin_port=33064访问权限shell> mysql --port 33062 -uroot -pERROR 1227 (42000): Access denied; you need (at least one of) the SERVICE_CONNECTION_ADMIN privilege(s) for this operationadmin用户需要SERVICE_CONNECTION_ADMIN 权限
mysql > grant SERVICE_CONNECTION_ADMINON *.*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.1admin_ssl_ca=admin-ca.pemadmin_ssl_cert=admin-server-cert.pemadmin_ssl_key=admin-server-key.pem3.MySQL ShellMySQL shell 脚本交互端口。通过脚本有效协调功能。
默认端口/协议
SSL或其他加密
说明
3306/TCP
Yes
MySQL客户端连接使用。
33060/TCP
Yes
MySQL客户端到MySQL服务器(X协议)。
33061/TCP
Yes
MySQL Shell在InnoDB集群配置期间用于检查服务器的端口。
4.MySQL WorkbenchMySQL官方提供的客户端链接工具,目前看文件比较大,包含诸多功能。
默认端口/协议
SSL或其他加密
说明
3306/TCP
Yes
MySQL客户端连接使用。
22/TCP
Yes
通过SSH隧道连接。
5.MySQL Router ConnectionMySQL实现读写分离,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 AvailabilityMySQL高可用复制使用的端口。目前复制集群有 主从,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 -lnpActive Internet connections (only servers)Proto Recv-Q Send-Q Local AddressForeign Address StatePID/Program nametcp00 127.0.0.1:33062 0.0.0.0:*LISTEN42700/mysqldtcp00 0.0.0.0:112110.0.0.0:*LISTEN42700/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 //开启非标准端口gt; semanage port -a -t mysqld_port_t -p tcp #避免与其他应用程序的端口冲突:$ cat /proc/sys/net/ipv4/ip_local_port_range$ cat /proc/sys/net/ipv4/ip_local_reserved_ports除此之外也可以通过防火墙进行配置。
总结从安全的角度来看,应该只在允许系统组件通信时才打开端口。在管理端口时,应始终遵循最小权限原则,即用户、进程、程序和其他系统组件只能访问其合法目的所需的信息和资源。
因为是全世界已知公认的的端口,特别是在公网上提供的MySQL服务时,为了减少被攻击,建议替换一些默认端口。 如:3306 改成3380端口。
参考作者 | 丁奇出处 | 极客时间《MySQL 实战 45 讲》专栏我们经常说,看一个事儿千万不要直接陷入细节里,你应该先鸟瞰其全貌,这样能够帮助你从高维度理解问题。同样,对于 MySQL 的学习也是这...
2024.11.12数据库数据恢复环境:一台本地windows sever操作系统服务器,服务器上部署mysql数据库单实例,引擎类型为innodb,表内数据存储所使用表空间类型为独立表空间。无数据库备份,未开启binl...
2024.11.15MySQL驱动参数你知道多少呢?常见的几个大家应该都见过,如下:参数说明user数据库用户名password用户密码useUnicode是否使用Unicode字符集,如果参数characterEnco...
2024.11.15大家好啊,我是大田。今天想分享一下数据库MySQL卸载,三步搞定。第一篇MySQL系列:【工具】数据库基本概念及MySQL安装1. 定位数据库的数据文件位置1) 首先我们找到 Mysql安装目录下的 ...
2024.11.15show processlist查看到的线程id和有些表中显示的线程id不一致,其实他们是同一个线程,有一一对应关系,可以通过performance_schema.threads查看直接获取这2列se...
2024.11.15