【问题标题】:Influxdb says not authorized to exectute statementInfluxdb 说没有授权执行语句
【发布时间】:2021-05-06 10:36:53
【问题描述】:

当我尝试通过 Python 库在 influxdb 上运行简单的 SELECT 查询时遇到了一些问题。

我正在尝试运行以下查询:

influx_client.query('SELECT * FROM "measurements" LIMIT 10;')

当然,我在执行查询之前切换到相应的数据库(并连接到服务器)。我还尝试了查询的这些变体:

influx_client.query("SELECT * FROM \"measurements\" LIMIT 10;")
influx_client.query("SELECT * FROM 'measurements' LIMIT 10;")
influx_client.query('SELECT * FROM \'measurements\' LIMIT 10;')
influx_client.query('SELECT * FROM {0} LIMIT 10;'.format("measurements"))
influx_client.query("SELECT * FROM {0} LIMIT 10;".format("measurements"))

但是它们都会导致相同的问题。

我得到的结果(或更多错误)如下:

influxdb.exceptions.InfluxDBClientError: 403: {"error":"error authorizing query: myuser not authorized to execute statement 'SELECT * FROM \"measurements\" LIMIT 10', requires READ on True"}

我知道我的用户具有所需的权限,因为当使用 CLI 连接到数据库时,我可以执行查询。最重要的是,我使用 SHOW GRANTS 检查了权限,我可以看到所有要求都得到了满足(用户实际上确实拥有所有权限)。

我已经看到了一些类似的问题(例如在这个 issue 中)但是这不适合我的情况,因为我引用了查询。

环境信息:

  • InfluxDB 版本:1.8.0
  • InfluxDB-python 版本:5.3.1
  • Python 版本:3.6.8
  • 操作系统版本:CentOS 7

有什么想法吗?

【问题讨论】:

    标签: python-3.x influxdb


    【解决方案1】:

    您需要检查两件事是否存在身份验证问题:

    1. 具有给定私钥和密码证书的https配置Link
    2. 为 influx db 连接传递用户凭据(还要检查区分大小写。

    使用过influx,这些都是关键配置会导致认证问题。

    使用命令 CLI 您需要为给定数据库提供用户权限

    Using <you-database>
    
    GRANT ALL PRIVILEGES TO <username>
    

    Grant Permission To User

    【讨论】:

    • 感谢您的回复。不幸的是,我已经尝试过这种可能性,但错误仍然存​​在。我非常确定我的用户已连接到数据库,因为(例如)我能够打印所有现有数据库甚至所有表。
    • 不,显示数据库也会在未经授权的情况下显示。所以测量?
    • 但是当我切换到相应的数据库并执行 show tables 时,我确实看到了这些表(instance 的测量值)
    • 您是否能够使用 cli 命令进行身份验证和获取数据?
    • 是的。从 cli 一切正常。
    猜你喜欢
    • 2021-11-29
    • 2018-12-08
    • 2022-01-27
    • 1970-01-01
    • 2012-06-08
    • 1970-01-01
    • 1970-01-01
    • 2021-10-15
    • 1970-01-01
    相关资源
    最近更新 更多