本文簡要描述如何爲 InfluxDB 開啓鑑權和配置用戶管理權限(安裝後默認不須要登陸),以及開啓鑑權後如何使用 HTTP API 寫數據。html
建立 admin 賬號密碼並賦予全部數據庫權限shell
建立數據庫
CREATE USER admin WITH PASSWORD ‘admin‘
賦權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
vi /etc/influxdb/influxdb.conf
把 [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
使用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"
用戶名密碼寫在 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"
除了命令關鍵字不一樣,數據部分基本相同,僅觀察一下數據部分:
cpu_load_short,host=server01,region=us-west value=0.64,value2=0.86 1434055562000000000
這行數據含有兩個空格,將之分爲三個部分:
第一部分: 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