InfluxDB 只有在 auth 关闭时才能创建第一个用户

InfluxDB can create the first user only when auth is turned off

有没有办法在启用身份验证的情况下在 InfluxDB 中创建用户?免责声明:我是 InfluxDB 的新手。

我创建了一个 Docker 容器 运行 InfluxDB,通过在 influxdb.conf 文件的 http 部分设置 auth-enabled = true 启用身份验证。

[http]
  ...
  # Determines whether user authentication is enabled over HTTP/HTTPS.
  auth-enabled = true
  ...

由于没有用户,我尝试使用以下命令创建一个:

docker exec influxdb influx -execute "create user admin with password 'blabla' with all privileges"

然而,这失败了

"stdout": "ERR: error authorizing query: no user provided

所以这是一个先有鸡还是先有蛋的问题。您不能创建用户,因为这首先需要以用户身份登录。

它在禁用身份验证时有效。所以我可以执行以下操作:

  1. 创建禁用身份验证的配置。
  2. 启动 InfluxDB
  3. 创建用户
  4. 更改配置以启用身份验证。
  5. 重新启动 InfluxDB

但在那种情况下,我必须将配置存储在特定的 Docker 卷中,当任何人无需身份验证即可登录时,它仍然会留下 window。所以它可以自动化,但它不是一个优雅的解决方案。

这个问题有没有优雅的解决方案?

大多数数据库映像都提供了一种通过环境变量配置 admin-useradmin-passwort 的方法。 InfluxDB 也这样做: https://hub.docker.com/_/influxdb/

在您的容器中设置环境变量 INFLUXDB_ADMIN_USERINFLUXDB_ADMIN_PASSWORD 以使用给定的密码创建管理员用户。您还可以通过环境变量 INFLUXDB_HTTP_AUTH_ENABLED

启用身份验证

2021 年更新:显然可能有一些 caveats/edge 案例,因为涉及到 Docker 中 InfluxDB 中的自动 admin/user 创建 - 请参见此处:https://github.com/influxdata/influxdata-docker/issues/232

如果您标记以下消息:“首先创建管理员用户或禁用身份验证”,即使您按照@adebasi 的建议设置了 envs,那么上述 link可能会帮助您解决问题。

我刚刚检查了最新的官方 InfluxDB docker 并且它可以工作,但是,如上面 link 所述,如果 meta 目录存在(即使是空的)在 /var/lib/influxdb 下则不会创建用户。

还有另一种情况——在使用适合 RaspberryPi Zero (https://hub.docker.com/r/mendhak/arm32v6-influxdb) 的非官方 InfluxDB docker 时,此创建用户的功能不存在或至少对我不起作用(我我检查了 docker 图片,但没有看到创建用户的代码)。