查看SQL数据库服务器端口,最快的办法是打开命令行执行netstat -ano并对照数据库进程PID,或者直接查询数据库系统视图,两条路径都能在几分钟内确认端口。
数据库服务器端口查询的常见场景
在正式开始操作之前,先明确什么情况下需要查询数据库端口,如果从来没换过数据库安装路径,也没动过防火墙,默认端口通常不需要查询:SQL Server默认1433,MySQL默认3306,PostgreSQL默认5432,但下面这些场景下,查询端口就是必须做的事。
- 开发环境搭建:多套数据库同时运行在同一台机器上,拿到的连接信息里没写端口,连不上。
- 防火墙策略配置:运维平台申请开通网络策略时,需要提交具体的端口号。
- 项目交接:接手一套老系统,配置文件里写的是localhost,但实际数据库装在另一台服务器上,端口是什么需要在服务器上查。
- 端口被占用:数据库启动时报端口被占用,需要确认是谁占了这个端口。
多数情况下,数据库端口是在安装时由默认配置生成的,但很多企业会在安装后调整端口以避免冲突,这时再靠默认值去猜测,基本不可能猜对。
怎么查看sql数据库服务器端口:两种核心方法
查询端口这件事,本质上就两条路:从操作系统层面查,或者从数据库内部查,两条路各有适用范围,下面拆开讲。
使用sql server端口查看命令netstat
netstat是Windows和Linux都自带的网络状态工具,它的强大之处在于,不需要登录数据库就能看到端口监听状态;如果数据库出问题起不来服务,这一招是唯一能用的。
操作步骤如下:
- 在数据库服务器上打开命令行,Windows按Win+R输入cmd,Linux直接打开终端。
- 执行命令
netstat -ano | findstr 端口号(Windows)或netstat -anp | grep 端口号(Linux),比如想看SQL Server是否监听1433端口:netstat -ano | findstr 1433。 - 如果有输出,最后一列是占用该端口的进程ID(PID),Windows下打开任务管理器匹配PID,Linux下用
ps -ef | grep PID确认是不是数据库进程。
netstat命令输出结果里,LISTENING状态表示正在监听,如果没有LISTENING,只有ESTABLISHED,说明端口被其他程序占用,数据库服务可能没起来。
一个实用的补充命令是netstat -ano | findstr 数据库PID,直接按进程号反查,可以看到这个数据库正在监听哪些端口。这种反查方式在排查多实例SQL Server时非常省时间,一台机器上装了四五个实例,按下PID过滤,每个实例监听了几个端口一目了然。
通过系统视图查询端口
如果数据库服务正常运行,从数据库内部查端口会得到权威答案,因为netstat查到的只是操作系统层面的监听信息,数据库配置里实际用哪个端口可能存在偏移,视图查询的结果更接近数据库自身的真实状态。
SQL Server执行下面这句SQL,就能看到实例实际监听的端口:
SELECT local_tcp_port FROM sys.dm_tcp_listener_states WHERE state = 0;
输出的一列数字就是当前监听的TCP端口,注意SQL Server有动态端口的概念,如果实例配置为动态端口,local_tcp_port显示的是当前实际运行的端口,下次重启可能变,建议配合SQL Server配置管理器查看TCP/IP协议的属性,确认是否勾选了动态端口。
MySQL里查询更简单:
SHOW VARIABLES LIKE 'port';
或者:
SELECT @@port;
运行结果直接给出一个数字,就是MySQL实例监听的端口,PostgreSQL同理,SHOW port;即可。
配置文件里怎么查端口
还有一种情况,数据库服务启动后立刻崩溃,或者根本没有服务在运行,netstat查不到任何信息,视图也进不去,这时候只能翻配置文件。
- SQL Server:安装目录下的errorlog文件(默认在C:\Program Files\Microsoft SQL Server\MSSQL15.MSSQLSERVER\MSSQL\Log)里记录了启动时的端口分配信息,用文本编辑器打开,搜索
Server is listening on即可找到端口。 - MySQL:Linux下配置在
/etc/my.cnf或/etc/mysql/mysql.conf.d/mysqld.cnf,Windows下是data目录的my.ini,搜索port=或[mysqld]节点下的port配置。 - PostgreSQL:配置文件是
postgresql.conf,搜索port = 5432这一行。
行业共识认为,配置文件是最后的信息来源,它的优点是稳定,缺点是未必反映实际运行状态;比如配置写的是3306,但端口被其他进程占了,数据库可能自动换端口或者起不来。
mysql端口号怎么看:三种情况逐一对照
MySQL是使用量最大的开源数据库,单独说它的端口查询方法,按场景分三种:
- 本地开发环境:命令行连接上去执行
SELECT @@port,得到端口号,或者看MySQL Workbench的连接配置,里面有明确的端口字段。 - 远程服务器排查:从服务器上执行
netstat -antp | grep mysqld或者netstat -antp | grep 3306(如果知道大概端口),实际输出会显示::3306或0.0.0:3306,前者说明只监听本机IPv6地址,后者说明对外开放。 - 容器部署:docker环境里用
docker ps查看PORTS列,比如0.0.0:3307->3306/tcp,3307是宿主机映射端口,3306是容器内部端口,连接时用3307,这一点很容易搞混。
MySQL还有个细节:skip-networking参数开启后,数据库只接受本地socket连接,不监听TCP端口,如果netstat查不到MySQL的监听,但服务明明在运行,要检查my.cnf里有没有开启这个参数。
查完端口之后:sql server修改端口后如何连接
端口查出来了,接下去的事情是拿它去连接,有几个高频坑值得提前说清楚。
SQL Server修改端口不是改完配置文件就结束的,如果SQL Server配置管理器里把端口从1433改成1533,需要做三步:
- 重启SQL Server服务,让新端口生效,在services.msc里找到SQL Server (MSSQLSERVER)右键重启。
- 检查防火墙出站规则,Windows防火墙默认会为SQL Server放行1433端口,修改端口后旧规则失效,需要在“高级安全Windows防火墙”里新建入站规则,放行TCP 1533。
- 客户端连接串里的端口要跟着改,连接时写成
服务器IP,1533(SQL Server用逗号,MySQL用冒号),或者连接串里加port=1533。
连接字符串里的端口优先级高于数据库默认端口,也就是说,客户端指定了端口,不管数据库配置怎么变,都按指定的来连接,这往往导致修改端口后,老系统还在用旧端口连接,白白报错。
实际排查时,可以先用telnet 服务器IP 端口测试三次握手,比如telnet 192.168.1.100 1533,如果提示能连上,说明端口在网络链路里是通的;如果卡住或者超时,问题在防火墙或者SQL Server的监听配置上。
数据库服务器端口查询的常见误区
写几个常见误解,避免在排查时浪费时间。
-
SQL Server默认端口一定是1433,这个说法只在默认实例下成立,命名实例(Named Instance)默认使用动态端口,监听的是随机端口,需要通过SQL Server Browser服务(UDP 1434)来解析实例名对应的端口号。两个实例同时运行时,
sys.dm_tcp_listener_states视图里应该能看到两条记录,一眼就能看清每个实例各占哪个端口。 -
端口号=服务进程ID,端口和进程ID是两个完全不同的概念,netstat输出结果里,第二列是本地端口,最后一列是PID,不要搞混方向,进程ID可能是四位或五位数,端口通常是四位数以内的常用范围。
-
改防火墙就能让数据库端口生效,顺序反了,端口要先用数据库配置确认,再改防火墙,数据库没监听,防火墙再开放也没用。
归根结底,查看SQL数据库服务器端口就是三条路:操作系统命令、数据库视图、配置文件,日常排查建议先用netstat快速定位,再用视图确认数据库实际状态;查不到端口时回到配置文件找线索,能解决八成问题,掌握这几种方法后,无论换了什么数据库品牌,排查思路都可以复用。
Q&A:怎么查看sql数据库服务器端口的相关问题
问:怎么查看sql数据库 服务器端口,最简单的方式是什么?
答:最简单的方式是登录数据库服务器打开命令行,Windows下执行netstat -ano | findstr 1433(默认端口),如果搜到LISTENING状态的行,再确认最后一列PID对应的进程是sqlservr.exe,即可确认SQL Server正在监听该端口,这种方式不需要登录数据库,也不需要密码,同时适合远程排查场景。
问:数据库服务器端口查询时,netstat没有输出怎么办?
答:netstat没有输出说明当前没有进程监听该端口,先确认数据库服务是否启动,Windows下在服务管理器中查看SQL Server (MSSQLSERVER)的状态,Linux下执行systemctl status mysql或service mysqld status,服务确实在运行但没有监听端口,检查数据库配置文件里的skip-networking参数(MySQL)和TCP/IP协议是否启用(SQL Server)。
问:mysql端口号怎么看,远程连接时端口对不上怎么办?
答:在MySQL命令行执行SHOW VARIABLES LIKE 'port'得到端口号,远程连接对不上时,首先确认服务器的防火墙允许该端口入站,然后检查MySQL的bind-address配置是否限制为127.0.0.1;如果绑定内网地址,远程客户端才能访问,修改配置后执行systemctl restart mysql重启服务,再重新查询端口确认生效。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/774319.html


