当 MySQL Router 连接到 InnoDB Cluster 或 innodb_replicaset; 时,它需要一个具有正确权限的用户帐户。从 MySQL Router 版本 8.0.19 开始,可以使用该
--account
选项指定此内部用户。在以前的版本中,MySQL Router 在集群的每个引导程序中创建内部帐户,这可能会导致随着时间的推移建立许多帐户。从 MySQL Shell 版本 8.0.20 开始,您可以使用 AdminAPI 来设置 MySQL Router 所需的用户帐户。
使用该setupRouterAccount(user, [options])
操作创建一个 MySQL 用户帐户或升级现有帐户,以便 MySQL Router 可以使用它来操作 InnoDB Cluster 或 InnoDB ReplicaSet。这是使用 InnoDB Cluster 和 InnoDB ReplicaSet 配置 MySQL Router 的推荐方法。
要添加一个新的 MySQL Router 帐户命名
myRouter1
为变量引用的 InnoDB Cluster
testCluster
,发出:
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 Cluster 或 InnoDB ReplicaSet 有多个实例,则创建的 MySQL Router 用户将传播到所有实例。
当您已经配置了 MySQL Router 用户时,例如您使用的是 8.0.20 之前的版本,您可以使用该
setupRouterAccount()
操作重新配置现有用户。在这种情况下,将
update
选项设置为 true。例如,要重新配置myOldRouter
用户,请在 JavaScript 中发出以下命令:
mysql-js> testCluster.setupRouterAccount('myOldRouter', {'update':1})
或者使用 Python:
mysql-py> testCluster.setup_router_account('myOldRouter', {'update':1})