查询服务器上有哪些数据库,最直接的办法是先用系统命令查看运行中的数据库进程和端口,再登录数据库实例执行“show databases”或对应的查询语句。 这个方法适用于绝大多数常见场景,不需要额外安装工具,下面按从系统层到数据库层、从本机到远程的顺序,把几条成熟路径拆开讲清楚。
先分清:查的是“数据库服务”还是“数据库实例”
很多朋友把这两个概念混在一起,导致命令敲了半天也没有头绪。
- 数据库服务指数据库软件的运行程序,mysqld、postgres、mongod,服务器上可能装了不止一套数据库软件。
- 数据库实例指软件中实际承载数据的独立对象,一个 MySQL 服务里可以建多个数据库,PostgreSQL 也支持多个数据库实例并行。
业内专家指出,80% 以上的查询需求其实都是“查实例列表”,而不是“查进程”,所以先确认你要找的是哪种,能省下不少时间。
怎么查看服务器上装了哪些数据库:系统层命令快速定位
如果你第一次接手服务器,不知道上面跑了什么数据库,先别急着登录,用系统命令扫描一遍。
Linux服务器查看数据库列表的常用命令
Linux 是主流服务器系统,以下命令在 CentOS、Ubuntu、Debian 上都能用。
-
查看正在运行的数据库进程
ps aux | grep -E "mysql|maria|postgres|oracle|mongo|redis"
有输出说明对应数据库正在运行,没有输出不代表没装,可能只是没启动。
-
查看端口占用,确认哪些数据库在监听
ss -tlnp
MySQL 默认 3306,PostgreSQL 默认 5432,SQL Server 默认 1433,MongoDB 默认 27017,Redis 默认 6379,看到这些端口就知道大概装了哪个数据库。
-
查看安装包列表,适合知道“装过但没启动”的情况
dpkg -l | grep -E "mysql|postgres|oracle|mongo" # Debian/Ubuntu rpm -qa | grep -E "mysql|postgres|oracle|mongo" # CentOS/RHEL
这三步做完,你心里基本有数了,如果还想要更明确的数据库名称列表,就得登录到数据库实例里执行查询。
Windows服务器查看已安装数据库的方法
Windows 服务器没有统一命令,但路径同样清晰。
- 打开“服务”管理器,快捷键
Win + R输入services.msc,找名字里带 MySQL、PostgreSQL、SQL Server 的服务项。 - 用 PowerShell 查看正在监听的端口
netstat -ano | findstr "3306 5432 1433 27017"
- 查看安装目录,通常在
C:Program Files下能看到对应数据库文件夹。
数据库实例查询命令:MySQL、PostgreSQL、SQL Server 对比
系统层只能告诉你“这个数据库软件存在”,想拿到完整数据库清单,必须登录实例,下表是几种常见数据库的查询方法,直接复制即可。
| 数据库 | 登录方式 | 查询所有数据库的命令 |
|---|---|---|
| MySQL / MariaDB | mysql -uroot -p |
SHOW DATABASES; |
| PostgreSQL | psql -U postgres |
l |
| SQL Server | sqlcmd -S localhost -U sa |
SELECT name FROM sys.databases; |
| Oracle | sqlplus / as sysdba |
SELECT name FROM v$database;(注意这里只显示当前实例名,完整实例列表需查 lsnrctl services) |
| MongoDB | mongosh |
show dbs |
| Redis | redis-cli |
INFO keyspace(查看数据库编号,Redis 默认有 16 个 db) |
MySQL/MariaDB 查询所有数据库的 SQL 语句
MySQL 是最常见的数据库之一,查询语句也最简单。
SHOW DATABASES;
这条语句会列出所有数据库名,information_schema、mysql、performance_schema 加上你业务创建的库,如果只想看业务库,可以加过滤条件:
SELECT schema_name FROM information_schema.schemata WHERE schema_name NOT IN ('information_schema','mysql','performance_schema','sys');
PostgreSQL 查询数据库列表的 psql 命令
登录之后输入:
l
会显示数据库名、所有者、编码等详细信息,如果想批量脚本化查询,可以用:
psql -U postgres -Atc "SELECT datname FROM pg_database;"
这个命令只输出库名,适合写进自动化脚本。
SQL Server 和 Oracle 的实例查询方法
SQL Server 用动态管理视图查询:
SELECT name FROM sys.databases ORDER BY name;
Oracle 和上述数据库不太一样,一个实例通常对应一个数据库,用 lsnrctl services 查看监听器注册的实例名,再登录查询当前库状态。
MongoDB 的 show dbs 也很直观,但注意它只显示有数据的数据库,空库不会出现在列表里。
远程服务器数据库列表查询:SSH 和云控制台是两条捷径
如果数据库不在你手边这台机器上,比如部署在云服务器或者独立机房,有两种常见做法。
通过 SSH 到远程服务器执行命令
Windows 推荐用 PowerShell 或 VSCode 的远程插件,Linux/macOS 直接终端操作:
ssh root@你的服务器IP
登录后按前面的步骤执行进程查看和登录命令,如果数据库不允许 root 远程登录,可以在本地先切到操作系统用户再进数据库。
云数据库实例直接看控制台
现在很多业务用云数据库,比如简米云 RDS、酷番云 CDB,这种情况下根本不用碰服务器,在云控制台搜索“RDS”或“云数据库”,就能看到该账号下所有数据库实例的列表,行业共识认为,云数据库的实例列表比手工查询更可靠,因为控制台会展示所有地域的实例,不会漏。
如果你的数据库部署在私有机房,没有控制台,那只能按手动流程来,这时建议把查询命令整理成脚本,定期巡检。
服务器数据库巡检服务价格参考:手动查询和付费巡检怎么选
查询数据库列表本身不复杂,但如果你管理的服务器数量较多,或者生产环境不允许随便敲命令,花钱找专业团队做一次巡检也常见。
什么时候手动查,什么时候请人查
- 只有一两台服务器,自己用 root 或管理员权限能登录:手动查询,零成本。
- 服务器数量多、数据库类型杂,或担心误操作影响业务:建议用自动化脚本或商业巡检服务。
服务器数据库巡检服务价格区间
这是大家常搜的“数据库巡检报价”相关场景,据行业公开信息,单台服务器的基础巡检服务价格多数情况下在几百元到数千元之间,具体取决于数据库类型、实例数量、数据量以及是否包含性能调优,不同城市服务商的报价差异也比较大,一线城市的专业 DBA 上门服务费用通常更高一些。
在决定是否花钱前,先自己用命令查一遍,能解决大部分“到底装了哪些库”的疑问。
查询服务器上有哪些数据库,本质是“看进程 + 看端口 + 登录实例执行查询语句”三步,系统层命令负责发现线索,SQL 命令负责给出最终名单,掌握这套流程,自己就能搞定绝大多数场景。
Q&A:如何查询服务器上有哪些数据库
查询数据库列表需要超级管理员权限吗?
视情况而定,系统层命令如 ps aux 和 ss -tlnp 在多数 Linux 发行版上需要 root 或 sudo 权限,否则只能看到自己的进程,登录数据库查询时,MySQL 的 SHOW DATABASES 只要用户有权限访问至少一个库就能执行,但要看全量列表建议使用 root 或拥有全局权限的账号,PostgreSQL 的 l 如果非超级用户,只能看到自己有权限的数据库,SQL Server 的 sys.databases 需要 VIEW ANY DATABASE 权限,所以实际操作中,临时查询可以用普通账号,完整巡检需要管理员权限。
为什么 ps aux 看不到数据库进程,但端口被占用了?
某些数据库软件启动时不显示原始进程名,比如容器化部署的数据库,进程名可能是 docker-proxy 而不是 mysqld,这时候用 ss -tlnp 看端口更准,云数据库可能不在当前服务器上,而是在单独的专用主机,自然看不到进程,这种情况建议直接登录数据库执行 SHOW DATABASES 或查云控制台。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/687698.html





