MySQL默认端口是多少

巷口听风
巷口听风
发布时间:2026-09-20 | 4人浏览过
原创

核心结论:MySQL 数据库的默认网络通信端口是 3306。在绝大多数操作系统与常规安装方式中,MySQL 服务启动后都会默认在 TCP 协议的 3306 端口上监听客户端传入的连接请求。了解并确认该端口对于配置应用程序数据库连接、排查网络通信受阻以及调整服务器安全策略具有关键作用。

一、3306 端口的作用与网络通信模型

计算机上的各种服务通过 IP 地址定位主机,再通过“端口号”区分不同的网络服务。MySQL 属于典型的客户端/服务端(Client/Server)架构,默认占用由互联网数字分配机构(IANA)专门分配的 TCP 3306 端口。

当应用系统(如 Web 网站、后端 API 服务)或管理工具(如 Navicat、DataGrip、MySQL CLI)需要读写数据库时,它们会向 MySQL 所在的 IP 地址发起针对 3306 端口的 TCP 握手。如果连接双方在同一台物理机或容器内,且未显式指定端口,客户端工具通常也会自动尝试通过 3306 端口进行网络通信。

SVG 配图 1
图 1:客户端经由网络与安全边界连接至 MySQL 默认 3306 端口的关系图

值得注意的是,自 MySQL 8.0 起,官方引入了 X Plugin 插件用于支持 NoSQL 文档存储协议,该组件默认使用的通信端口为 33060。对于大部分通过标准 SQL 执行查询、事务的应用而言,核心通信端口依然是标准的 3306。

二、如何检查当前实例实际运行的端口

虽然默认值为 3306,但在实际多实例部署或经过定制的环境中,MySQL 的运行端口可能被管理员调整。我们可以通过数据库内部命令或操作系统网络命令直接核查。

方法 1:登录 MySQL 执行 SQL 查询

如果已经可以通过本地命令行连接到数据库,直接查询系统变量即可获取当前监听的端口值:

SHOW VARIABLES LIKE 'port';
终端输出示例:
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| port          | 3306  |
+---------------+-------+
1 row in set (0.01 sec)

方法 2:在服务器操作系统上查看监听状态

在 Linux 服务器终端中,使用系统命令检查 mysqld 进程到底在监听哪一个网络端口:

ss -tlnp | grep mysqld
# 或者使用 netstat 命令
netstat -tlpn | grep mysqld
终端输出示例:
LISTEN   0   128   0.0.0.0:3306   0.0.0.0:*   users:(("mysqld",pid=1420,fd=21))

输出中出现的 0.0.0.0:3306 即表明 MySQL 进程正在当前主机的所有网络接口上监听 3306 端口。

三、修改 MySQL 默认端口的操作流程

出于避免端口冲突(例如在同一台机器上运行两个 MySQL 实例)或避免恶意全网扫描等维护需求,有时需要将默认的 3306 端口修改为自定义端口(如 3307 或 13306)。整个操作过程可拆解为明确的四个步骤:

SVG 配图 2
图 2:修改 MySQL 端口的具体执行流程

步骤 1:找到配置文件

不同操作系统中,配置文件的默认路径有所区别:

  • Linux (CentOS / RHEL / Ubuntu / Debian):通常位于 /etc/my.cnf 或 /etc/mysql/my.cnf。
  • Windows:通常位于 MySQL 安装目录或数据目录下的 my.ini 文件(如 C:\ProgramData\MySQL\MySQL Server 8.0\my.ini)。

步骤 2:在配置文件中指定端口

使用文本编辑器打开配置文件,找到 [mysqld] 区域,添加或修改 port 字段:

[mysqld]
port = 3307

[client]
port = 3307
注意事项:建议同时在 [client] 区域将端口同步修改为 3307,这样在本地终端直接输入 mysql -u root -p 时,客户端会自动连接 3307 端口,无需每次手动增加 -P 3307 参数。

步骤 3:重启 MySQL 服务

修改配置文件后,必须重新加载进程才能生效:

# Linux 系统
sudo systemctl restart mysqld
# 或
sudo systemctl restart mysql

# Windows 系统 (PowerShell 管理员模式)
net stop MySQL
net start MySQL

步骤 4:确认端口已更新

服务重启后,指定新的大写 -P 参数进行登录验证:

mysql -h 127.0.0.1 -P 3307 -u root -p

四、排查无法连接到 3306 端口的常见因素

当应用提示 Can't connect to MySQL server on 'x.x.x.x:3306' (111) 或连接超时错误时,问题通常并不出在端口号本身,而是受网络环境或配置限制所致。常见原因可分为以下三类:

SVG 配图 3
图 3:3306 端口常见连接异常与排查维度

1. 监听地址绑定限制(bind-address)

部分 Linux 发行版安装 MySQL 后,默认配置为 bind-address = 127.0.0.1。这表示 3306 端口只接受来自本机内部的请求。如果客户端位于其他物理机或开发机上,需要将该项修改为 bind-address = 0.0.0.0 才会对外监听所有网卡接口。

2. 操作系统防火墙与云平台安全组

在 Linux 主机上,系统防火墙可能拦截了 3306 端口:

# Firewalld 放行 3306
sudo firewall-cmd --permanent --add-port=3306/tcp
sudo firewall-cmd --reload

# UFW (Ubuntu) 放行 3306
sudo ufw allow 3306/tcp

如果使用的是云主机(如阿里云、腾讯云、AWS),还需要在云控制台的安全组规则中,确认已经为实例的入方向添加了允许目标端口为 3306 的 TCP 协议访问规则。

五、常用场景与总结速查

在不同技术场景下与 MySQL 通信时,端口参数的书写方式略有不同:

使用场景 连接形式 / 配置项示例 说明
命令行 CLI mysql -h 192.168.1.10 -P 3306 -u root -p 大写 -P 表示端口号,小写 -p 表示输入密码
JDBC (Java) jdbc:mysql://192.168.1.10:3306/mydb 主机名与端口之间使用英文冒号分隔
PHP (PDO) mysql:host=192.168.1.10;port=3306;dbname=mydb 在 DSN 字符串中以 port= 明确指定
Python (PyMySQL) pymysql.connect(host='...', port=3306, ...) 连接函数中的整数参数
SVG 配图 4
图 4:MySQL 端口关键概念与运维操作核心速查图

总结来说,MySQL 的标准默认端口是 3306。在日常开发与部署时,默认配置无需改动即可满足要求;当处于生产环境或多实例部署架构时,根据需要调整配置文件中的 port 字段,并同步配置防火墙与监听地址,就能确保数据库通信的安全与稳定。

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表