当 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: "
更新 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
: 使用系统默认值。