📣
TiDB Cloud Premium 开放公测中。为企业级工作负载提供无限扩展、即时弹性伸缩和高级安全保障。此页面由 AI 自动翻译,英文原文请见此处。

SQL 代理账号



SQL 代理账号是 TiDB Cloud 自动为 TiDB Cloud 用户创建的 SQL 用户账号,用于通过 SQL EditorData Service 代表用户访问数据库。例如,testuser@pingcap.com 是一个 TiDB Cloud 用户账号,而 3jhEcSimm7keKP8.testuser._41mqK6H4 则是其对应的 SQL 代理账号。

SQL 代理账号为在 TiDB Cloud 中访问数据库提供了一种安全的、基于令牌的身份验证机制。通过消除传统的用户名和密码凭证,SQL 代理账号提升了安全性并简化了访问管理。

SQL 代理账号的主要优势如下:

  • 增强安全性:通过使用 JWT 令牌,降低了与静态凭证相关的风险。
  • 精简访问控制:仅限于 SQL Editor 和 Data Service 访问,确保精确的权限管理。
  • 易于管理:为开发者和管理员简化了 TiDB Cloud 的身份验证流程。

识别 SQL 代理账号

如果你想判断某个 SQL 账号是否为 SQL 代理账号,请按照以下步骤操作:

  1. 检查 mysql.user 表:

    USE mysql; SELECT user FROM user WHERE plugin = 'tidb_auth_token';
  2. 检查该 SQL 账号的授权信息。如果授权中包含 role_adminrole_readonlyrole_readwrite 等角色,则该账号为 SQL 代理账号。

    SHOW GRANTS for 'username';

SQL 代理账号的创建方式

当 TiDB Cloud 用户被授予实例或集群权限角色时,SQL 代理账号会在 TiDB Cloud Starter 实例或 TiDB Cloud Dedicated 集群初始化期间自动创建。

SQL 代理账号的删除方式

当用户被移出 组织项目,或者其角色变更为无权访问 TiDB Cloud Starter 实例或 TiDB Cloud Dedicated 集群的角色时,SQL 代理账号会被自动删除。

需要注意的是,如果 SQL 代理账号被手动删除,当用户下次登录 TiDB Cloud 控制台时,该账号会被自动重新创建。

SQL 代理账号用户名

在某些情况下,SQL 代理账号的用户名与 TiDB Cloud 用户名完全相同,但在其他情况下则不完全相同。SQL 代理账号的用户名由 TiDB Cloud 用户邮箱地址的长度决定,规则如下:

环境邮箱长度用户名格式
TiDB Cloud Dedicated<= 32 个字符完整邮箱地址
TiDB Cloud Dedicated> 32 个字符prefix($email, 23)_prefix(base58(sha1($email)), 8)
TiDB Cloud Serverless<= 15 个字符serverless_unique_prefix + "." + email
TiDB Cloud Serverless> 15 个字符serverless_unique_prefix + "." + prefix($email, 6)_prefix(base58(sha1($email)), 8)

示例:

环境邮箱地址SQL 代理账号用户名
TiDB Cloud Dedicateduser@pingcap.comuser@pingcap.com
TiDB Cloud Dedicatedlongemailaddressexample@pingcap.comlongemailaddressexample_48k1jwL9
TiDB Cloud Serverlessu1@pingcap.com{user_name_prefix}.u1@pingcap.com
TiDB Cloud Serverlesslongemailaddressexample@pingcap.com{user_name_prefix}.longem_48k1jwL9

SQL 代理账号密码

由于 SQL 代理账号基于 JWT 令牌,因此无需为这些账号管理密码。安全令牌由系统自动管理。

SQL 代理账号角色

SQL 代理账号的角色取决于 TiDB Cloud 用户的 IAM 角色:

  • 组织级别:

    • Organization Owner: role_admin
    • Organization Billing Manager: 无代理账号
    • Organization Viewer: 无代理账号
    • Organization Console Audit Manager: 无代理账号
  • 项目级别:

    • Project Owner: role_admin
    • Project Data Access Read-Write: role_readwrite
    • Project Data Access Read-Only: role_readonly

SQL 代理账号访问控制

SQL 代理账号基于 JWT 令牌,仅可用于 Data Service 和 SQL Editor 访问。无法通过用户名和密码使用 SQL 代理账号访问 TiDB Cloud Starter 实例或 TiDB Cloud Dedicated 集群。

文档内容是否有帮助?