配置 influxDB 鉴权及 HTTP API 写数据的方法

 

本文简要描述如何为 InfluxDB 开启鉴权和配置用户管理权限(安装后默认不须要登陆),以及开启鉴权后如何使用 HTTP API 写数据。html

 

建立 InfluxDB 管理员帐号

建立 admin 账号密码并赋予全部数据库权限shell

  1. 建立数据库

    CREATE USER admin WITH PASSWORD ‘admin‘
  2. 赋权markdown

    GRANT ALL PRIVILEGES TO admin

其余命令curl

  • 修改用户(密码)post

    SET PASSWORD FOR admin = ‘admin‘
  • 删除用户atom

    DROP USER admin
  • 撤消权限url

    REVOKE ALL  ON  mydb   FROM admin
  • 查看权限spa

    SHOW GRANTS FOR admin
    • 1

 

打开认证

vi /etc/influxdb/influxdb.conf
  • 1

把 [http] 标签下的 auth-enabled 选项值改成 true.net

[http]  
enabled = true  
bind-address = ":8086"  
auth-enabled = true # ✨
log-enabled = true  
write-tracing = false  
pprof-enabled = false  
https-enabled = false  
https-certificate = "/etc/ssl/influxdb.pem"

 

重启 InfluxDB

命令行 CLI 登陆

$ influx -username admin -password admin
Connected to http://localhost:8086 version 0.13.x
InfluxDB shell 0.13.x
>

 

或者

$ influx
Connected to http://localhost:8086 version 0.13.x
InfluxDB shell 0.13.x
> auth
username: admin
password:
>

HTTP API 查询的方式变为

curl -G "http://localhost:8086/query" -u admin:admin --data-urlencode "q=SHOW DATABASES"
curl -G "http://localhost:8086/query" --data-urlencode "u=admin" --data-urlencode "p=admin" --data-urlencode "q=SHOW DATABASES"
curl -G "http://localhost:8086/query?u=admin&p=admin&q=SHOW+DATABASES"

 

开启鉴权后如何写数据

使用insert命令行写数据:

> INSERT cpu_load_short,host=server01,region=us-west value=0.64,value2=0.86 1434055562000000000
  • 1

使用HTTP API写数据:

  • 用户名密码写在 URL 中

    curl -i -X POST "http://localhost:8086/write?db=mydb&u=admin&p=admin" --data-binary "cpu_load_short,host=server01,region=us-west value=0.64,value2=0.86 1434055562000000000"
    • 1
  • 用户名密码写在 HTTP 头 Authorization 选项

    curl -i -X POST "http://localhost:8086/write?db=mydb" -u admin:admin --data-binary "cpu_load_short,host=server01,region=us-west value=0.64,value2=0.86 1434055562000000000"
    • 1

除了命令关键字不一样,数据部分基本相同,仅观察一下数据部分:

cpu_load_short,host=server01,region=us-west value=0.64,value2=0.86 1434055562000000000
  • 1

这行数据含有两个空格,将之分为三个部分:

  • 第一部分: cpu_load_short,host=server01,region=us-west 
    第一部分称为key,key中包含了measurement name和tags(tags又分为tag key和tag value,tags能够有多个),例子中的“cpu_load_short”就是measurement name,“host”和“reginon”是tag key,“server01”和“us-west”是对应的tag value。在我看来,measurement name和MySQL数据库的表名是等同的。另外,在tag value中的空格应以“/”加上空格表示,如有多个tag value,可使用逗号隔开,可是应以“/”加逗号表示。

  • 第二部分:value=0.64,value2=0.86 
    第二部分称为Field,一样和tags的形式相同,都是键值对的形式,可是tags中的值必须是string类型,而Field中的值能够为Integer、float、Boolean、string类型,若为Integer类型,则值后必须加“i”,不然该值为float类型,好比value=23意味着这个值23是float类型,而value=23i,意味着值23是Integer类型。Boolean类型的值的表示方式有不少,直接写成:t, T, true, TRUE, f, F, false或 FALSE均可以。

  • 第三部分(可选):1434055562000000000 
    第三部分称为Timestamp,是时间戳,若是该部分省略,则默认将当前时间的时间戳插入数据库,不然按照用户输入的时间戳插入。

第一种写数据方式 
产生 HTTP 包(使用 Chrome 插件 Postman 生成)

POST /write?db=mydb HTTP/1.1
Host: 192.168.6.93:8086
Authorization: Basic YWRtaW46YWRtaW4=
Cache-Control: no-cache
Postman-Token: d3ce583a-1e11-63ec-a818-034aeaa91f10

cpu_load_short,host=server01,region=us-west value=0.64,value2=0.86 1434055565000000000

 

第二种写数据方式 
产生 HTTP 包

POST /write?db=mydb&u=admin&p=admin HTTP/1.1
Host: 192.168.6.93:8086
Cache-Control: no-cache
Postman-Token: 6773f66a-de4c-435d-6469-0a1194752a86

cpu_load_short,host=server01,region=us-west value=0.64,value2=0.86 1434055565000000000

参考: 访问须要HTTP Basic Authentication认证的资源的各类语言的实现

相关文章
相关标签/搜索