前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >InfluxDB配置admin用户认证登陆

InfluxDB配置admin用户认证登陆

作者头像
Devops海洋的渔夫
修改2019-11-28 08:08:56
11.3K0
修改2019-11-28 08:08:56
举报
文章被收录于专栏:Devops专栏

需求

不管是yum安装,亦或者是docker安装的方式,influxdb默认安装完毕之后,并不会自带用户认证的功能,直接就可以进行访问的了。 情况如下:

代码语言:javascript
复制
root@d248ddfcd76c:/# influx
Connected to http://localhost:8086 version 1.7.9
InfluxDB shell version: 1.7.9
> 

或者curl直接查询出来数据,不需要用户认证,如下:

代码语言:javascript
复制
[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用户

基本命令:

代码语言:javascript
复制
# 显示用户
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"

实际操作如下:

代码语言:javascript
复制
# 查看所有用户
> 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用户登陆,则会报错如下:

代码语言:javascript
复制
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认证用户登陆访问一下,格式如下:

代码语言:javascript
复制
influx -username '用户名' -password '密码'

执行如下:

代码语言:javascript
复制
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请求的时候就要带上用户名和密码的参数,不然无法执行,示例如下:

代码语言:javascript
复制
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展开显示。

代码语言:javascript
复制
[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中

代码语言:javascript
复制
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选项

代码语言:javascript
复制
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" 

下面来执行一下:

代码语言:javascript
复制
[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数据,如下:

代码语言:javascript
复制
> 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
>
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 需求
  • 处理步骤
    • 创建admin用户
      • 在配置文件启用认证
        • 使用admin用户登陆influxdb
          • http带上admin用户查询、写入数据
            • 查询数据
          • 写入数据
          相关产品与服务
          容器服务
          腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档