美文网首页kubernetes以及运维开发系列
8. InfluxDB配置admin用户认证登陆

8. InfluxDB配置admin用户认证登陆

作者: Devops海洋的渔夫 | 来源:发表于2019-11-25 14:31 被阅读0次

    需求

    不管是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
    > 
    

    相关文章

      网友评论

        本文标题:8. InfluxDB配置admin用户认证登陆

        本文链接:https://www.haomeiwen.com/subject/aejqwctx.html