在cmd中看数据库是否开启服务器,方法就两条:本地看服务状态,远程测端口连通性,命令分别是net start和telnet。 下面拆开讲,不管你是查自己电脑上的MySQL,还是查公司那台SQL Server,照着操作就行。
cmd怎么查看数据库服务是否启动(本机状态检查)
如果你怀疑本机数据库没起来,直接连数据库客户端肯定报错,这时候要查Windows服务有没有在跑,数据库安装后会注册成一个系统服务,服务停了数据库就处于“假死”状态。
用 net start 看已启动的服务列表
- 按
Win+R,输入cmd回车。 - 输入
net start并回车。 - 在输出列表里找数据库服务名,常见的有
MySQL80、SQL Server (MSSQLSERVER)、PostgreSQL。
列表里没有数据库服务名,说明服务没启动,需要手动启动时,用管理员身份打开cmd,执行net start MySQL80,注意服务名要写准。
用 sc query 查指定服务的运行状态
net start只显示正在运行的,查不到已经停止的服务,更精确的是用sc query:
- 输入
sc query 服务名,比如sc query MySQL80 - 看输出里的
STATE一栏:RUNNING表示正在运行,STOPPED表示已停止
记不住服务名时,先执行sc query state= all列出所有服务,找到带mysql、mssql、postgresql字样的条目,注意state=和all之间有个空格。
用 netstat 看端口监听来确认
服务看起来在运行,也可能因为端口被占用或监听地址不对导致连不上,用端口确认最踏实:
- 输入
netstat -ano | findstr 3306,3306是MySQL默认端口 - 看到
状态和PID,说明服务正在监听LISTENING
- 端口对应关系:MySQL用3306,SQL Server用1433,PostgreSQL用5432,Oracle用1521
换个端口就把数字改掉,这个命令不区分数据库类型,只要端口监听中就表示有进程在提供服务。
cmd查询数据库服务器端口是否开启(远程连通性测试)
比如你人在办公室,要连一台远程的数据库服务器,不知道它开着没,这时候不查服务了,直接测IP和端口最快。
telnet 是最通用的端口测试命令
telnet是Windows自带的端口检测神器,但Win10/11默认没启用,先去“控制面板-程序-启用或关闭Windows功能”里勾选“Telnet客户端”,
- 输入
telnet 192.168.1.10 3306 - 如果窗口变黑屏,或者显示
Connected to 192.168.1.10,说明端口通 - 如果提示
无法打开到主机的连接,说明端口没开或者被防火墙挡了
测试完退出时,按Ctrl+]进入telnet命令行,再输入quit退出,别直接关窗口。
PowerShell的 Test-NetConnection 结果更直观
是cmd,但cmd里先敲powershell再执行也能用PowerShell命令,推荐直接测:
Test-NetConnection 192.168.1.10 -Port 1433
输出里看TcpTestSucceeded:True就是端口开着,False就是不通,相比telnet的纯黑屏,这个命令直接把结果告诉你,适合新手。
批量检测多个数据库端口
服务器多了,一个个敲太累,用PowerShell写个循环:
$ports = 3306,1433,5432
foreach ($p in $ports) {
Test-NetConnection 192.168.1.10 -Port $p
}
每个端口的测试结果会分行显示,如果只想看通不通,加一句| Select-Object RemotePort, TcpTestSucceeded过滤就行。
不同数据库在cmd下的服务名和默认端口对比
| 数据库 | 服务名 | 默认端口 | 检测命令 |
| MySQL | MySQL80 或 MySQL | 3306 | netstat -ano | findstr 3306 |
| SQL Server | MSSQLSERVER | 1433 | netstat -ano | findstr 1433 |
| PostgreSQL | postgresql-x64-版本 | 5432 | netstat -ano | findstr 5432 |
| Oracle | OracleServiceSID | 1521 | netstat -ano | findstr 1521 |
服务名里的版本号和实例名每台机器都不一样,最可靠的办法还是sc query state= all找全名,端口方面,如果安装时改过默认值,以实际配置为准。
cmd测试数据库连通性命令实战:mysql和sqlcmd
端口通了只说明网络层面通,数据库能不能接受连接,还得用客户端工具试一下,这样是最真实的检测。
MySQL 命令行连接测试
装过MySQL客户端的话,cmd里直接敲:
mysql -h192.168.1.10 -P3306 -uroot -p
回车后提示输密码,能进到mysql>提示符,说明数据库服务器完全正常,如果报Can't connect,要么服务没起,要么防火墙拦了3306,要么用户没授权远程登录。
SQL Server 用 sqlcmd 测试
SQL Server自带的命令行工具是sqlcmd:
sqlcmd -S 192.168.1.10,1433 -U sa -P 你的密码
注意端口写在IP后头用逗号,不是冒号,连接成功会显示1>提示符,这个工具在装有SQL Server的机器上才有,客户端工具也可以单独装。
PostgreSQL 用 psql 测试
psql -h 192.168.1.10 -p 5432 -U postgres
同样需要psql客户端,连接成功会显示数据库名称和提示符,如果卡在密码输入界面,说明网络和端口都通,只是认证没过。
远程数据库连接失败时的排查顺序
cmd里测不通,按下面顺序捋一遍,多数问题都能定位:
- 先看网络通不通:
ping 目标IP,不通就是网络问题 -
再看端口通不通:
telnet或Test-NetConnection结果 - 端口通但连不上:检查数据库服务是否启动,以及是否监听在指定IP上
- 监听正常但登录失败:检查用户名密码、SQL Server是否开启混合认证、MySQL用户是否授权了远程登录
业内专家指出,远程连接失败的原因中,防火墙和用户权限这两项占了大多数,端口本身没被占用的情况反而少见,所以别着急重装数据库,先按顺序查。
Q&A:cmd查看数据库是否开启服务器常见问题
cmd里net start找不到数据库服务怎么办?
net start只显示启动了的服务,停止状态的服务不会出现,换sc query state= all列出全部服务,从输出里找名字包含MySQL、MSSQL、POSTGRESQL或Oracle的条目,找到服务全名后,再用sc query 服务名查看具体状态。
telnet端口通,但mysql -h还是连不上?
端口通代表网络层没问题,MySQL可能配置了bind-address只监听127.0.0.1,或者用户权限没开远程,检查my.ini里的bind-address,并确认用户账号的Host是或你的IP,还有一点,MySQL的认证加密方式可能不被旧客户端支持,也容易报错。
如何测试多个服务器的数据库端口是否开启?
用PowerShell写循环最方便:$ips = "192.168.1.10","192.168.1.11"; foreach ($ip in $ips) { Test-NetConnection $ip -Port 3306 },输出里会显示每台机的TcpTestSucceeded结果,比telnet一个一个试快很多,而且不会卡在交互界面。
回到开头那句话:cmd查数据库服务器是否开启,无非就是查服务、查端口、查连接三步,本地用sc query和netstat,远程用Test-NetConnection和数据库客户端命令,顺序执行就不会误判,记住几个默认端口,以后排查效率会高不少。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/685347.html





