InfluxDB是一款专门为时间序列数据设计的高性能数据库,广泛应用于监控指标存储、物联网数据采集、实时分析等场景。无论是刚搭建好InfluxDB环境准备写入第一批数据,还是接手一个已有实例需要了解里面存了哪些库,第一步往往都是执行show databases命令列出所有数据库。这条命令看似简单,但背后涉及InfluxDB的查询语法体系、HTTP API交互方式以及权限控制机制,值得系统梳理一遍。

在命令行中使用show databases
最经典的使用方式是通过InfluxDB自带的交互式命令行工具influx。默认情况下,influx连接本机8086端口,进入交互模式后直接输入命令即可。示例操作如下:
$ influx Connected to http://localhost:8086 version 1.8.10 InfluxDB shell version: 1.8.10 > show databases name: databases name ---- _internal monitor_db telegraf
执行后返回结果以表格形式展示,name列就是数据库名称列表。其中_internal是InfluxDB内部自带的系统数据库,存储了服务自身运行的监控指标,比如写入吞吐、查询耗时等统计信息。这个库由系统自动创建和管理,一般不建议往里面写业务数据,也不建议随意删除,否则可能影响服务自身的监控能力。
如果连接的不是本机或者端口有改动,可以在启动时通过参数指定,例如influx -host 192.168.1.100 -port 8086。开启认证的实例则需要带上-username和-password参数。命令行方式交互直观,适合临时排查和手工操作,缺点是不便于在程序中调用,这时就需要借助HTTP API。
通过HTTP API查询数据库列表
InfluxDB提供了完善的HTTP接口,show databases同样可以通过GET请求执行。API地址为/query,查询语句通过q参数传递。使用curl的示例如下:
# 未开启认证的实例 curl -G 'http://localhost:8086/query' \ --data-urlencode 'q=show databases' # 开启认证的实例 curl -G 'http://localhost:8086/query' \ -u admin:yourpassword \ --data-urlencode 'q=show databases'
返回的是JSON格式的数据,结构大致如下:
{
"results": [
{
"statement_id": 0,
"series": [
{
"name": "databases",
"columns": ["name"],
"values": [
["_internal"],
["monitor_db"],
["telegraf"]
]
}
]
}
]
}
解析这个JSON时,关注results数组下series中的values即可,每个子数组就是一个数据库名。在程序化场景中,比如用Python做自动化巡检脚本,或者在前端管理界面中渲染数据库下拉框,都是走的这条接口。相比命令行,HTTP API的输出更结构化,方便程序解析,是集成开发时的首选方式。
需要提醒一点,InfluxDB 2.x版本架构有较大调整,不再使用show databases这类InfluxQL管理命令,而是改用bucket概念和Flux查询语言。如果实例返回未知命令的报错,先确认版本号,1.x系列才支持本文介绍的操作。
常见报错与权限问题
执行show databases时最常遇到的报错是权限不足,提示error: the user does not have permission to execute statement SHOW DATABASES。这通常出现在开启了认证但没有给当前用户授予相应权限的情况。管理员可以通过以下命令为用户授权:
-- 授予查看所有数据库的权限 GRANT ALL PRIVILEGES TO "readonly_user" -- 或者只针对单个库授权 GRANT READ ON "monitor_db" TO "readonly_user"
另一个容易踩坑的点是连接了错误的端口或服务根本没启动,此时命令行会提示connection refused。排查思路是先用systemctl status influxdb确认服务状态,再用ss -lntp | grep 8086确认端口监听情况,逐步定位是网络、防火墙还是服务本身的问题。
还有一种情况是执行命令后返回空的库列表,这并不是报错,而是实例确实只有_internal库,说明还没有创建业务数据库。InfluxDB不会像MySQL那样在安装时要求初始化库表结构,建库操作完全由使用者按需执行。
配套的数据库管理命令
列出数据库之后,日常管理还会用到下面几条配套命令,配合show databases形成完整的管理闭环:
-- 创建数据库,WITH DURATION可设置数据保留策略 CREATE DATABASE "mydb" -- 创建时指定保留15天的数据 CREATE DATABASE "mydb" WITH DURATION 15d REPLICATION 1 NAME "autogen" -- 切换到某个数据库,后续操作默认作用于该库 USE "mydb" -- 删除数据库,操作不可逆,务必谨慎 DROP DATABASE "mydb"
使用USE命令切换数据库后,插入和查询语句就不需要再显式指定库名,能减少很多重复代码。而在写入数据时,如果不通过USE切换,也可以在_measurement前直接带上库名来定位,例如INSERT mydb,host=server01 cpu=23.5。
实际运维中,建议将show databases与其他show系列命令搭配使用,比如SHOW MEASUREMENTS查看库中的表、SHOW RETENTION POLICIES查看保留策略、SHOW USERS查看用户列表,这些命令共同构成了InfluxDB 1.x的基础元数据查询体系。掌握它们之后,无论是日常巡检还是故障排查,都能快速摸清一个陌生实例的整体结构,为后续的数据写入和查询分析打好基础。
InfluxDBshow databases数据库管理修改时间:2026-09-07 19:08:34