当 MySQL Router 连接到集群、集群集或副本集时,它需要一个具有正确权限的用户帐户。这个内部用户可以使用 --account
选项指定。在之前的版本中,MySQL Router 在集群的每次引导时都会创建内部帐户,这会导致随着时间的推移创建许多帐户。您可以使用 AdminAPI 设置 MySQL Router 操作 InnoDB 集群或 InnoDB 副本集所需的帐户。
使用 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: "
更新 MySQL Router 用户的密码。以下 JavaScript 示例将 MySQL Router 用户 newPassword
", update: 1} 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
: 使用系统默认值。