无论是yum安装,亦或者是docker安装的方式,influxdb默认安装完毕以后,并不会自带用户认证的功能,直接就能够进行访问的了。 状况以下:docker
root@d248ddfcd76c:/# influx
Connected to http://localhost:8086 version 1.7.9
InfluxDB shell version: 1.7.9
>
复制代码
或者curl直接查询出来数据,不须要用户认证,以下:shell
[root@server ~]# curl -G 'http://localhost:8086/query' --data-urlencode "q=show databases;"
{"results":[{"statement_id":0,"series":[{"name":"databases","columns":["name"],"values":[["_internal"]]}]}]}
[root@server ~]#
复制代码
对于这种不设置防备的措施,整体来讲,不是很好。json
因此,下面来看看怎么设置用户认证。vim
基本命令:api
# 显示用户
SHOW USERS
# 建立用户
CREATE USER "username" WITH PASSWORD 'password'
# 赋予用户管理员权限
GRANT ALL PRIVILEGES TO username
# 建立管理员权限的用户
CREATE USER <username> WITH PASSWORD '<password>' WITH ALL PRIVILEGES
# 修改用户密码
SET PASSWORD FOR username = 'password'
# 撤消权限
REVOKE ALL ON mydb FROM username
# 查看权限
SHOW GRANTS FOR username
# 删除用户
DROP USER "username"
复制代码
实际操做以下:bash
# 查看全部用户
> show users
user admin
---- -----
>
# 建立一个root用户,设置密码为newpwd,主要不要使用双引号" 括起来,否则会报错
> create user "root" with password 'newpwd'
>
# 再次查看用户信息,发现admin为false,说明还要设置一下权限。
> show users
user admin
---- -----
root false
>
# 删除root用户
> drop user root
>
> show users
user admin
---- -----
>
# 从新设置root用户,并设置带上全部权限
> create user "root" with password 'newpwd' with all privileges
>
# 发现admin权限为true了,那么admin的用户就建立好了。
> show users
user admin
---- -----
root true
>
复制代码
默认状况下,influxdb的配置文件是禁用认证策略的,因此须要修改设置一下。app
编辑配置文件vim /etc/influxdb/influxdb.conf
,把 [http]
下的 auth-enabled
选项设置为 true
。curl
配置完毕以后,重启influxdb服务便可。ui
在配置启动认证以及重启influxdb以后,若是不使用admin用户登录,则会报错以下:this
root@e81b9a3b0eba:/# influx
Connected to http://localhost:8086 version 1.7.9
InfluxDB shell version: 1.7.9
>
> 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>".
>
复制代码
这里已经报错提示须要权限验证:ERR: unable to parse authentication credentials
这里使用admin认证用户登录访问一下,格式以下:
influx -username '用户名' -password '密码'
复制代码
执行以下:
root@e81b9a3b0eba:/# influx -username 'root' -password 'newpwd'
Connected to http://localhost:8086 version 1.7.9
InfluxDB shell version: 1.7.9
>
> show users;
user admin
---- -----
root true
>
复制代码
当配置了admin认证用户以后,进行http的api请求的时候就要带上用户名和密码的参数,否则没法执行,示例以下:
curl -G "http://localhost:8086/query" -u username:password --data-urlencode "q=SHOW DATABASES"
curl -G "http://localhost:8086/query" --data-urlencode "u=username" --data-urlencode "p=password" --data-urlencode "q=SHOW DATABASES"
curl -G "http://localhost:8086/query?u=username&p=password&q=SHOW+DATABASES"
复制代码
执行以下: 其中增长?pretty=true
能够将json展开显示。
[root@locust03 ~]# curl -G "http://localhost:8086/query?pretty=true" -u root:newpwd --data-urlencode "q=show databases"
[root@locust03 ~]# curl -G "http://localhost:8086/query" -u root:newpwd --data-urlencode "q=show databases"
{"results":[{"statement_id":0,"series":[{"name":"databases","columns":["name"],"values":[["_internal"]]}]}]}
[root@locust03 ~]#
[root@locust03 ~]# curl -G "http://localhost:8086/query" --data-urlencode "u=root" --data-urlencode "p=newpwd" --data-urlencode "q=show databases"
{"results":[{"statement_id":0,"series":[{"name":"databases","columns":["name"],"values":[["_internal"]]}]}]}
[root@locust03 ~]#
[root@locust03 ~]# curl -G "http://localhost:8086/query?u=root&p=newpwd&q=show+databases"
{"results":[{"statement_id":0,"series":[{"name":"databases","columns":["name"],"values":[["_internal"]]}]}]}
[root@locust03 ~]#
复制代码
固然设置了用户认证以后,写入数据的时候也要带上用户名以及密码&u=username&p=password
,以下:
用户名密码写在URL中
curl -i -X POST "http://localhost:8086/write?db=mydb&u=username&p=password" --data-binary "cpu_load_short,host=server01,region=us-west value=0.64,value2=0.86 1434055562000000000"
复制代码
用户名密码写在HTTP头Authorization选项
curl -i -X POST "http://localhost:8086/write?db=mydb" -u username:password --data-binary "cpu_load_short,host=server01,region=us-west value=0.64,value2=0.86 1434055562000000000"
复制代码
下面来执行一下:
[root@server ~]# curl -i -X POST "http://localhost:8086/write?db=mydb&u=root&p=newpwd" --data-binary "cpu_load_short,host=server01,region=us-west value=0.64,value2=0.86 1434055562000000000"
HTTP/1.1 204 No Content
Content-Type: application/json
Request-Id: 4b314fea-0d16-11ea-8017-0242ac110002
X-Influxdb-Build: OSS
X-Influxdb-Version: 1.7.9
X-Request-Id: 4b314fea-0d16-11ea-8017-0242ac110002
Date: Fri, 22 Nov 2019 10:53:19 GMT
[root@server ~]#
[root@locust03 ~]# curl -i -X POST "http://localhost:8086/write?db=mydb" -u root:newpwd --data-binary "cpu_load_short,host=server01,region=us-west value=0.64,value2=0.86"
HTTP/1.1 204 No Content
Content-Type: application/json
Request-Id: 6b2c10bb-0d16-11ea-8018-0242ac110002
X-Influxdb-Build: OSS
X-Influxdb-Version: 1.7.9
X-Request-Id: 6b2c10bb-0d16-11ea-8018-0242ac110002
Date: Fri, 22 Nov 2019 10:54:12 GMT
[root@locust03 ~]#
复制代码
查看插入后的influxdb数据,以下:
> use mydb
Using database mydb
>
> show measurements;
name: measurements
name
----
cpu_load_short
>
> select * from cpu_load_short;
name: cpu_load_short
time host region value value2
---- ---- ------ ----- ------
1434055562000000000 server01 us-west 0.64 0.86
1574420052671401939 server01 us-west 0.64 0.86
>
复制代码