使用 IAM 用户连接 AlloyDB 数据库时出错

问题描述 投票:0回答:1

对于 Postgre Cloudsql,我们必须使用 google cloud-sql-python-connector 来连接到数据库。当我们使用 IAM 用户建立连接时,如果我们将标志

enable_iam_auth
传递为 true ,则无需传递任何密码。我通过查看该连接器的源代码确认了这一点,密码是可选的(第 58 行here) 但是,对于 AlloyDB,我们必须使用 AlloyDB-python-connector,当我没有为 IAM 用户传递任何密码时,会导致错误。这可以从源代码中确认,其中密码不是可选的(第 50 行here)。我尝试将密码设置为空白字符串或无,但它不起作用。我还尝试设置标志
enable_iam_auth
但我收到错误,它是无效参数。

该错误是因为 Alloy-db-connector 在弹出密码时未指定任何默认值。我们还有其他方法可以将此连接器与 AlloyDB 一起使用吗?

python google-cloud-sql google-alloydb
1个回答
0
投票

此 Github 问题

所述

这是因为AlloyDB Python Connector 目前不支持自动 IAM 数据库身份验证功能。目前正在制作中,将于近期发布。有一个“开放功能请求”作为此功能的公开跟踪错误。 但是,您实际上可以配置/连接您自己的 SQLAlchemy 引擎,以通过一些非常少的代码使用 IAM 身份验证进行连接。

我们有一个

示例,使用此方法与 psycopg2

直接连接,而不使用 AlloyDB Python 连接器。 可以找到在 AlloyDB 实例上启用 IAM 数据库身份验证的其他步骤

https://cloud.google.com/alloydb/docs/manage-iam-authn

并确保详细遵循所有步骤。 TLDR 步骤;

[ ] 通过
    alloydb.iam_authentication
  • 标志在 AlloyDB 实例上启用 IAM 身份验证
    [ ] 向 IAM 委托人(用户或服务账户)授予 
  • Cloud AlloyDB Client
  • Cloud AlloyDB Database User
    角色
    [ ] 在您的 AlloyDB 集群上创建 AlloyDB IAM 数据库用户
  • [ ] 以数据库管理员用户(例如
  • postgres
  • 用户)身份登录,并授予新的 IAM 数据库用户对相应表等的适当数据库权限。
    
        
© www.soinside.com 2019 - 2024. All rights reserved.