InfluxDB配置admin用戶認證登陸

  • 2019 年 11 月 26 日
  • 筆記

需求

不管是yum安裝,亦或者是docker安裝的方式,influxdb默認安裝完畢之後,並不會自帶用戶認證的功能,直接就可以進行訪問的了。 情況如下:

root@d248ddfcd76c:/# influx  Connected to http://localhost:8086 version 1.7.9  InfluxDB shell version: 1.7.9  > 

或者curl直接查詢出來數據,不需要用戶認證,如下:

[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 ~]# 

對於這種不設置防備的措施,總體來說,不是很好。

所以,下面來看看怎麼設置用戶認證。

處理步驟

創建admin用戶

基本命令:

# 顯示用戶  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"

實際操作如下:

# 查看所有用戶  > 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的配置文件是禁用認證策略的,所以需要修改設置一下。

編輯配置文件vim /etc/influxdb/influxdb.conf,把 [http] 下的 auth-enabled 選項設置為 true 。

配置完畢之後,重啟influxdb服務即可。

使用admin用戶登陸influxdb

在配置啟動認證以及重啟influxdb之後,如果不使用admin用戶登陸,則會報錯如下:

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  > 

http帶上admin用戶查詢、寫入數據

查詢數據

當配置了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  >

Tags: