1. 程式人生 > >influxdb -install -relay--http write--read.[create db]

influxdb -install -relay--http write--read.[create db]

pretty 相同 讀寫權限 select dsm key 這樣的 entos 重設

influxdb是一個時間序列數據庫。centos下載和安裝命令

wget https://dl.influxdata.com/influxdb/releases/influxdb-1.2.4.x86_64.rpm

sudo yum localinstall influxdb-1.2.4.x86_64.rpm

service influxdb start // 啟動

netstat -an | grep 8086

netstta -an | grep 8088

如果這兩個端口都啟動則表示influxdb啟動成功。influxdb的管理端口8083在1.2.4默認是關閉的,需要手動配置下才能訪問。

配置文件默認為/etc/influxdb/influxdb.conf。可以配置端口號,控制管理臺。數據存儲目錄。

#是否上報。默認允許上報,可能類似於windows的采集用戶數據

reporting-disabled = true

#集群數據通信端口。全局配置
bind-address = ":8088"

#meta

dir = "/var/lib/influxdb/meta"

#時間序列數據

dir = "/var/lib/influxdb/data"

寫數據和查數據官網有例子比較簡單。 https://docs.influxdata.com/influxdb/v1.2/introduction/installation/。

寫數據需要註意的地方是時間序列單位是UTC納秒,剛開始在這繞了很大一圈,寫數據可以成功但是查詢不到,因為時間不對。java並沒有直接獲UTC納秒的方法,只有 System.currentTimeMillis()獲取毫秒的方法。其實根據毫秒和納秒的換算單位,直接在 System.currentTimeMillis()加六個0就可以。考慮到實際會有並發寫入的情況,一毫秒內可能會有相同的數據寫入,可以把6位0改成加6位的隨機數。進一步減少並發帶來的數據沖突。

curl -POST http://localhost:8086/query --data-urlencode "q=CREATE DATABASE mydb"

I get an Method Not Allowed in return.

Nevertheless, doing the same with get works perfectly:

curl http://localhost:8086/query?q=CREATE+DATABASE+"db"


身份驗證與授權(權限管理)

Authentication and Authorization

註意:身份授權與驗證不能用於阻止惡意用戶。如果有額外的做合理性和安全性的需求,InfluxDB可以運行在第三方服務內。

身份驗證


InfluxDB的HTTP API和CLI(command line interface),通過簡單的基於證書的內建權限控制,使用API鏈接數據庫。啟動身份驗證後,http請求只有加入證書才能被接受。
註意:身份驗證適用於http請求的範圍。插件不適用(Graphite, collectd, etc.)

設置身份驗證

  1. 創建一個admin用戶
  2. 默認情況下,在配置文件中,身份驗證是關閉的。可以通過設置 [http] 中的 auth-enabled=true 來開啟
  3. 重啟應用

現在,InfluxDB會檢查身份證書,並且只處理驗證成功的request請求。
註意:如果打開了身份驗證功能,而且沒有用戶,InfluxDB會強制創建admin用戶,並且只接受創建admin用戶的query

身份驗證請求


HTTP API

基本上控制臺是可以這樣的。
Query:

curl -v -G "http://login1.org:8086/query?db=test&u=admin&p=admin" --data-urlencode "q=select * from table"
  • 1

Write:

curl -v -XPOST "http://login1.org:8086/write?db=test&u=admin&p=admin" --data-binary "table dd=44"
  • 1

用戶名密碼明文嵌入url即可。

CLI

有兩種操作方式:

  • 啟動控制臺後,再設置用戶 auth <username> <password>
$ influx
Connected to http://localhost:8086 version 0.9.4.1
InfluxDB shell 0.9.4.1
> auth admin admin
>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 以用戶名密碼啟動:
influx -username todd -password influxdb4ever
  • 1

身份授權


默認情況下,身份驗證是關閉的,並且所有的用戶有所有的權限,相關認證都會被忽略。只有打開情況下才會驗證授權信息。

用戶類型及其權限


管理員

所有管理員有所有數據庫的讀寫權限,並且可以執行以下所有的管理類查詢語句:
數據庫管理:

? CREATE DATABASE, 和 DROP DATABASE
? DROP SERIESDROP MEASUREMENT
? CREATE RETENTION POLICY, ALTER RETENTION POLICY, 和 DROP RETENTION POLICY
? CREATE CONTINUOUS QUERYDROP CONTINUOUS QUERY

用戶管理:
? Admin user management:
CREATE USER, GRANT ALL PRIVILEGES, REVOKE ALL PRIVILEGES, 和 SHOW USERS
? Non-admin user management:
CREATE USER, GRANT [READ,WRITE,ALL], REVOKE [READ,WRITE,ALL], 和 SHOW GRANTS
? General user management:
SET PASSWORDDROP USER

非管理員用戶:

非管理員用戶可以賦一種權限:
? READ
? WRITE
? ALL (READWRITE )
這三種情況可以賦給每個用戶,每個數據庫。

用戶管理命令


管理員用戶管理:

  • 創建一個新的管理員用戶
CREATE USER <username> WITH PASSWORD ‘<password>‘ WITH ALL PRIVILEGES
  • 1
  • 為一個已有用戶授權管理員權限
GRANT ALL PRIVILEGES TO <username>
  • 1
  • 取消用戶權限
REVOKE ALL PRIVILEGES FROM <username>
  • 1
  • 展示用戶及其權限
SHOW USERS
  • 1

非管理員用戶管理:

  • 創建一個新的普通用戶
CREATE USER <username> WITH PASSWORD ‘<password>‘
  • 1
  • 為一個已有用戶授權
GRANT [READ,WRITE,ALL] ON <database_name> TO <username>
  • 1
  • 取消權限
REVOKE [READ,WRITE,ALL] ON <database_name> FROM <username>
  • 1
  • 展示用戶在不同數據庫上的權限
SHOW GRANTS FOR <user_name>
  • 1

普通用戶賬號功能管理

  • 重設密碼
SET PASSWORD FOR <username> = <password>‘
  • 1
  • 刪除用戶
DROP USER <username>
  • 1

用戶驗證與授權的http錯誤


當驗證失敗時http會返回:

HTTP 401 Unauthorized

influxdb -install -relay--http write--read.[create db]