Timo
Timo

Reputation: 5390

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

Is there a way of creating an user in InfluxDB with authentication enabled? Disclaimer: I am a novice to InfluxDB.

I created a Docker container running InfluxDB with authentication enabled by setting auth-enabled = true in http section of the influxdb.conf file.

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

As there are no users, I tried to create one using the following command:

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

However, this fails with

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

So it is kind of a chicken-and-egg problem. You cannot create a user, because this requires logging in as a user in the first place.

It works when authentication is disabled. So I can do the following:

  1. Create config with authentication disabled.
  2. Start InfluxDB
  3. Create users
  4. Change config so authentication is now enabled.
  5. Restart InfluxDB

but in that case I have to store the config in a specific Docker volume and it still leaves a window when anybody could log in without authentication. So it can be automated, but it is not an elegant solution.

Is there an elegant solution for this problem?

Upvotes: 5

Views: 15715

Answers (2)

skowro.net
skowro.net

Reputation: 71

2021 update: apparently there might be some caveats/edge cases as it comes to automatic admin/user creation in InfluxDB in Docker - see here: https://github.com/influxdata/influxdata-docker/issues/232

If you stamp on the following message: "create admin user first or disable authentication" even if you set envs as suggested by @adebasi then the above link might help you tackle the problem.

I've just checked the latest official InfluxDB docker and it works, however, as stated in the above link, if meta directory is present (even if empty) under /var/lib/influxdb then user won't be created.

There's also another case - while using unofficial InfluxDB docker suitable for RaspberryPi Zero (https://hub.docker.com/r/mendhak/arm32v6-influxdb) this functionality of creating users is not present there or at least didn't work for me (I've checked docker image and I saw no code to create users).

Upvotes: 3

adebasi
adebasi

Reputation: 3945

Most DB images provide a way to configure an admin-user and admin-passwort via environment variables. InfluxDB does this too: https://hub.docker.com/_/influxdb/

Set the environment variables INFLUXDB_ADMIN_USER and INFLUXDB_ADMIN_PASSWORD in your container to create the admin user with the given password. You can also enable auth by an environment variable INFLUXDB_HTTP_AUTH_ENABLED

Upvotes: 7

Related Questions