6.10.2 配置 MySQL Router 用户

当 MySQL Router 连接到集群、集群集或复制集时,它需要一个具有正确权限的用户帐户。可以使用 --account 选项指定此内部用户。在以前版本中,MySQL Router 在集群的每次引导时都会创建内部帐户,这会导致随着时间的推移累积大量帐户。您可以使用 AdminAPI 来设置 MySQL Router 所需的用户帐户。

使用 setupRouterAccount(user, [options]) 操作来创建 MySQL 用户帐户或升级现有帐户,以便 MySQL Router 可以使用它来操作 InnoDB 集群或 InnoDB 复制集。这是使用 InnoDB 集群和 InnoDB 复制集配置 MySQL Router 的推荐方法。

要将名为 myRouter1 的新 MySQL Router 帐户添加到变量 testCluster 引用的 InnoDB 集群,请执行以下操作

mysqlsh> testCluster.setupRouterAccount('myRouter1')

在这种情况下,没有指定域,因此帐户是用通配符 (%) 字符创建的,这确保了创建的用户可以从任何域连接。要限制帐户只能从 example.com 域在 JavaScript 中连接,请执行以下操作

mysql-js> testCluster.setupRouterAccount('myRouter1@example.com')

或使用 Python

mysql-py> testCluster.setup_router_account('myRouter1@example.com')

该操作会提示您输入密码,然后设置具有正确权限的 MySQL Router 用户。如果 InnoDB 集群或 InnoDB 复制集具有多个实例,则创建的 MySQL Router 用户将传播到所有实例。

您可以在创建用户的同一命令中创建密码,使用字典选项 {password: "password"}

当您已配置 MySQL Router 用户时,可以使用 setupRouterAccount() 操作来重新配置现有用户。在这种情况下,将 update 选项设置为 true 传递。例如,要重新配置 myOldRouter 用户,请在 JavaScript 中执行以下操作

mysql-js> testCluster.setupRouterAccount('myOldRouter', {'update':1})

或使用 Python

mysql-py> testCluster.setup_router_account('myOldRouter', {'update':1})

您还可以使用字典选项 {password: "newPassword", update: 1} 更新 MySQL Router 用户的密码。以下 JavaScript 示例将 MySQL Router 用户的密码 myRouter1 更新为 newPassword1#

mysql-js> testCluster.setupRouterAccount('myRouter1', {password: "newPassword1#",'update':1})

或使用 Python

mysql-py> testCluster.setup_router_account('myRouter1', {password: "newPassword1#", 'update':1})

也支持 SSL 证书。以下选项可与 setupRouterAccount() 一起使用

  • requireCertIssuer: 帐户的可选 SSL 证书颁发者。

  • requireCertSubject: 帐户的可选 SSL 证书主体。

  • passwordExpiration: numberOfDays | Never | Default: 帐户的密码过期设置。

    • numberOfDays: 密码过期前的天数。

    • Never: 密码永不过期。

    • Default: 使用系统默认值。