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
所以这是一个先有鸡还是先有蛋的问题。您不能创建用户,因为这首先需要以用户身份登录。
它在禁用身份验证时有效。所以我可以执行以下操作:
- 创建禁用身份验证的配置。
- 启动 InfluxDB
- 创建用户
- 更改配置以启用身份验证。
- 重新启动 InfluxDB
但在那种情况下,我必须将配置存储在特定的 Docker 卷中,当任何人无需身份验证即可登录时,它仍然会留下 window。所以它可以自动化,但它不是一个优雅的解决方案。
这个问题有没有优雅的解决方案?
大多数数据库映像都提供了一种通过环境变量配置 admin-user
和 admin-passwort
的方法。 InfluxDB 也这样做:
https://hub.docker.com/_/influxdb/
在您的容器中设置环境变量 INFLUXDB_ADMIN_USER
和 INFLUXDB_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 图片,但没有看到创建用户的代码)。
有没有办法在启用身份验证的情况下在 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
所以这是一个先有鸡还是先有蛋的问题。您不能创建用户,因为这首先需要以用户身份登录。
它在禁用身份验证时有效。所以我可以执行以下操作:
- 创建禁用身份验证的配置。
- 启动 InfluxDB
- 创建用户
- 更改配置以启用身份验证。
- 重新启动 InfluxDB
但在那种情况下,我必须将配置存储在特定的 Docker 卷中,当任何人无需身份验证即可登录时,它仍然会留下 window。所以它可以自动化,但它不是一个优雅的解决方案。
这个问题有没有优雅的解决方案?
大多数数据库映像都提供了一种通过环境变量配置 admin-user
和 admin-passwort
的方法。 InfluxDB 也这样做:
https://hub.docker.com/_/influxdb/
在您的容器中设置环境变量 INFLUXDB_ADMIN_USER
和 INFLUXDB_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 图片,但没有看到创建用户的代码)。