«Почему»
Различные базы данных использовали рассуждения с небольшими различиями на протяжении многих лет, но в основном это выглядит так:
В своей самой простой установке, <insert DBMS here>
должен просто работать - для интеграционных тестов, простых целей оценки и т. д. Мы могли бы сгенерировать пароль пользователя root / admin / superhoncho, но чаще всего это не изменится, и это Bad Thing ™ .
И поскольку никто в здравом уме не запустит базу данных в рабочем режиме без аутентификации и авторизации, включенных, обеспечивая легкий доступ по умолчаниюВ любом случае установка не является проблемой, не так ли?
Я склонен согласиться с этим рассуждением, хотя я не согласен с тем, что в случае, если СУБД отключает аутентификацию и авторизацию по умолчанию, она должна связыватьсяпо умолчанию localhost
. Вы делаете свою СУБД доступной для внешнего мира, и будь это только сеть вашей компании? Вы наверняка подумали о последствиях!
«Как»
Аутентификация
Я собираюсь использовать докер, чтобы проиллюстрировать это, и совершенно очевидно, что вы должны сделатьв среде без докера.
Сначала мы извлекаем образ докера infxdb и за один раз создаем файл конфигурации по умолчанию:
$ docker run --rm influxdb influxd config > influxdb.conf
Unable to find image 'influxdb:latest' locally
latest: Pulling from library/influxdb
...
Digest: sha256:0aa7fea5336b5e5cc1c80e16062865821ec772e06519c138947ef5ebd9b34907
Status: Downloaded newer image for influxdb:latest
Merging with configuration at: /etc/influxdb/influxdb.conf
Теперь мы изменим параметр аутентификации в [http]
раздел нашего influxdb.conf
в true:
...
[http]
auth-enabled = true
...
Далее мы запускаем нашу InfluxDB, используя этот измененный файл конфигурации:
$ docker run -d --name influxdb -p 8086:8086 \
-v $PWD/influxdb.conf:/etc/influxdb/influxdb.conf:ro \
influxdb -config /etc/influxdb/influxdb.conf
1987f962c331d2404a2564bb752d971553b13181dbbbb1e38cf50d345b3191c4
(Полученная вами хеш-сумма будет другой. )
Теперь мы подключаемся к нашей приливной базе данных и создаем пользователя-администратора
$ docker exec -it influxdb influx
Connected to http://localhost:8086 version 1.7.8
InfluxDB shell version: 1.7.8
> create user admin with password 'secret' with all privileges;
С этого момента учетные данные необходимы практически для всего
> show users
ERR: unable to parse authentication credentials
Warning: It is possible this error is due to not setting a database.
Please set a database with the command "use <database>".
> auth
username: admin
password:
> show users
user admin
---- -----
admin true
Авторизация
Простая мнемоника: «Пользователям предоставляются разрешения для базы данных». Итак, чтобы предоставить что-то пользователю, этот пользователь должен сначала существовать:
> create user berkancetin with password 'supersecret';
> create database foobar
> grant read on foobar to berkancetin
> show users
user admin
---- -----
admin true
berkancetin false
> show grants for "berkancetin"
database privilege
-------- ---------
foobar READ
Дальнейшее чтение (!!!)
Игнорировать на свой страх и риск. Вы. Есть. Been. Предупрежден.