TiDB Dashboard 用户管理

TiDB Dashboard 与 TiDB 使用相同的用户权限体系和登录验证方式。你可以通过控制和管理 TiDB SQL 用户,从而限制和约束这些用户对 TiDB Dashboard 的访问。本文描述了 TiDB SQL 用户访问 TiDB Dashboard 所需的最小权限,并提供了如何创建最小权限 SQL 用户、如何通过 RBAC 授权 SQL 用户登录的示例。

要了解如何控制和管理 TiDB SQL 用户,请参见 TiDB 用户账户管理

所需权限说明

  • 当所连接的 TiDB 服务器未启用安全增强模式 (SEM) 时,要访问 TiDB Dashboard,SQL 用户应当拥有以下所有权限:

    • PROCESS
    • SHOW DATABASES
    • CONFIG
    • DASHBOARD_CLIENT
  • 当所连接的 TiDB 服务器启用了安全增强模式 (SEM) 时,要访问 TiDB Dashboard,SQL 用户应当拥有以下所有权限:

    • PROCESS
    • SHOW DATABASES
    • CONFIG
    • DASHBOARD_CLIENT
    • RESTRICTED_TABLES_ADMIN
    • RESTRICTED_STATUS_ADMIN
    • RESTRICTED_VARIABLES_ADMIN
  • 若希望 SQL 用户在登录 TiDB Dashboard 后允许修改界面上的各项配置,SQL 用户还应当拥有以下权限:

    • SYSTEM_VARIABLES_ADMIN
  • 若希望 SQL 用户在登录 TiDB Dashboard 后允许使用快速绑定执行计划功能。

    • SYSTEM_VARIABLES_ADMIN
    • SUPER

用户管理 - 图1

注意

拥有 ALL PRIVILEGESSUPER 等粗粒度高权限的用户同样可以登录 TiDB Dashboard。出于最小权限原则,强烈建议创建用户时仅使用上述精细权限,从而防止用户执行非预期操作。请参阅权限管理了解这些权限的详细信息。

如果登录 TiDB Dashboard 时指定的 SQL 用户未满足上述权限需求,则登录将失败,如下图所示:

insufficient-privileges

示例:创建一个最小权限 SQL 用户用于登录 TiDB Dashboard

  • 当所连接的 TiDB 服务器未启用安全增强模式 (SEM) 时,你可以通过执行以下示例 SQL 语句创建一个允许登录 TiDB Dashboard 的 SQL 用户 dashboardAdmin

    1. CREATE USER 'dashboardAdmin'@'%' IDENTIFIED BY '<YOUR_PASSWORD>';
    2. GRANT PROCESS, CONFIG ON *.* TO 'dashboardAdmin'@'%';
    3. GRANT SHOW DATABASES ON *.* TO 'dashboardAdmin'@'%';
    4. GRANT DASHBOARD_CLIENT ON *.* TO 'dashboardAdmin'@'%';
    5. -- 如果要使自定义的 SQL 用户能修改 TiDB Dashboard 界面上的各项配置,可以增加以下权限
    6. GRANT SYSTEM_VARIABLES_ADMIN ON *.* TO 'dashboardAdmin'@'%';
    7. -- 如果要使用快速绑定执行计划(具体参见 https://docs.pingcap.com/zh/tidb/dev/dashboard-statement-details#快速绑定执行计划)功能,可以增加以下权限
    8. GRANT SYSTEM_VARIABLES_ADMIN ON *.* TO 'dashboardAdmin'@'%';
    9. GRANT SUPER ON *.* TO 'dashboardAdmin'@'%';
  • 当所连接的 TiDB 服务器启用了安全增强模式 (SEM) 时,先关闭 SEM,然后执行以下示例 SQL 语句创建一个允许登录 TiDB Dashboard 的 SQL 用户 dashboardAdmin,创建完成后,再重新开启 SEM:

    1. CREATE USER 'dashboardAdmin'@'%' IDENTIFIED BY '<YOUR_PASSWORD>';
    2. GRANT PROCESS, CONFIG ON *.* TO 'dashboardAdmin'@'%';
    3. GRANT SHOW DATABASES ON *.* TO 'dashboardAdmin'@'%';
    4. GRANT DASHBOARD_CLIENT ON *.* TO 'dashboardAdmin'@'%';
    5. GRANT RESTRICTED_STATUS_ADMIN ON *.* TO 'dashboardAdmin'@'%';
    6. GRANT RESTRICTED_TABLES_ADMIN ON *.* TO 'dashboardAdmin'@'%';
    7. GRANT RESTRICTED_VARIABLES_ADMIN ON *.* TO 'dashboardAdmin'@'%';
    8. -- 如果要使自定义的 SQL 用户能修改 TiDB Dashboard 界面上的各项配置,可以增加以下权限
    9. GRANT SUPER ON *.* TO 'dashboardAdmin'@'%';
    10. -- 如果要使用快速绑定执行计划(具体参见 https://docs.pingcap.com/zh/tidb/dev/dashboard-statement-details#快速绑定执行计划)功能,可以增加以下权限
    11. GRANT SYSTEM_VARIABLES_ADMIN ON *.* TO 'dashboardAdmin'@'%';
    12. GRANT SUPER ON *.* TO 'dashboardAdmin'@'%';

示例:通过 RBAC 授权 SQL 用户登录 TiDB Dashboard

以下示例演示了如何在基于角色的访问控制 (RBAC) 机制下创建角色及用户来登录 TiDB Dashboard。

  1. 创建一个包含 TiDB Dashboard 所有功能所需权限的角色 dashboard_access

    1. CREATE ROLE 'dashboard_access';
    2. GRANT PROCESS, CONFIG ON *.* TO 'dashboard_access'@'%';
    3. GRANT SHOW DATABASES ON *.* TO 'dashboard_access'@'%';
    4. GRANT DASHBOARD_CLIENT ON *.* TO 'dashboard_access'@'%';
    5. GRANT SYSTEM_VARIABLES_ADMIN ON *.* TO 'dashboard_access'@'%';
    6. GRANT SUPER ON *.* TO 'dashboard_access'@'%';
  2. 为其他用户授权 dashboard_access 角色并设置为默认启用:

    1. CREATE USER 'dashboardAdmin'@'%' IDENTIFIED BY '<YOUR_PASSWORD>';
    2. GRANT 'dashboard_access' TO 'dashboardAdmin'@'%';
    3. -- 需要默认启用 dashboard_access 角色
    4. SET DEFAULT ROLE dashboard_access to 'dashboardAdmin'@'%';

完成以上步骤后,可以用 dashboardAdmin 用户登录 TiDB Dashboard。

登录 TiDB Dashboard

创建满足 TiDB Dashboard 权限要求的 SQL 用户后,你可以使用该用户登录 TiDB Dashboard。