用户¶
集群内的MySQL用户帐户可以分为两个不同的组:
- 应用程序级用户:非特权用户帐户;
- 系统级用户:自动化集群部署和管理任务所需的帐户,例如用于MySQL健康检查的Percona Server。雷竞技下载官网
由于这两组用户帐户用于不同的目的,因此在以下部分中分别考虑它们。
无特权的用户¶
默认情况下没有创建非特权(通用)用户帐户。如果您需要通用用户,请运行以下命令:
美元kubectl运行-——rm雷竞技下载官网percona-client——图片=雷竞技下载官网percona: 8.0——重启=从来没有--mysql-hcluster1-mysql-uroot-proot_password mysql >格兰特所有特权在database1。*来“user1”@“%”确认通过“密码”;
请注意
MySQL密码在这里不应该超过32个字符,因为MySQL 5.7.5中引入了特定于复制的限制。
验证用户是否已成功创建。如果成功,下面的命令将让您通过ProxySQL成功登录到MySQL shell:
美元kubectl运行-——rm雷竞技下载官网percona-client——图片=雷竞技下载官网percona: 8.0——重启=从来没有--bashil p雷竞技下载官网ercona-client: / $mysql- hcluster1-mysql-primary-uuser1-ppassword1 mysql >选择*从database1.table1限制1;
您还可以尝试执行任何简单的SQL语句,以确保已成功授予权限。
系统用户¶
为了实现集群组件的自动化部署和管理,运营商需要为MySQL用户提供系统级Percona Server。雷竞技下载官网
这些用户的凭据存储为Kubernetes秘密对象。Operator需要在启动Percona Server for MySQL之前部署。雷竞技下载官网
请注意
操作员将使用现有的Secrets,或者使用随机生成的密码(如果不存在)创建一个新的Secrets对象。此外,从Operator版本0.5开始,它将为在现有Secrets对象中找不到的系统用户生成随机密码。
所需机密的名称(cluster1-secrets(默认情况下)应该在spec.secretsName选择权部署/ cr.yaml配置文件。
下表显示了系统用户的名称和用途。
警告
不应该使用这些用户来运行应用程序。
| 用户的目的 | 用户名 | 密码及私钥 | 描述 |
|---|---|---|---|
| 管理 | 根 | 根 | 数据库管理用户,如果需要,可以由应用程序使用 |
| 协调器 | 协调器 | 协调器 | 编排器管理用户 |
| 备份 | xtrabackup | xtrabackup | 运行备份的用户 |
| 集群检查 | clustercheck | clustercheck | 用户活动检查和准备检查 |
| raybet雷竞技竞猜在线官网监控 | raybet雷竞技竞猜在线官网 | raybet雷竞技竞猜在线官网 | 用户用于内部监控目的和raybet雷竞技竞猜在线官网PMM代理 |
| 操作员管理 | 操作符 | 操作符 | 数据库管理用户,只能由操作人员使用 |
| 复制 | 复制 | 复制 | 复制所需的管理用户 |
| PMM服务器API密钥 | pmmserverkey | 访问PMM服务器时使用的API密钥 |
对象格式¶
这些用户的Secrets对象的默认名称为cluster1-secrets并且可以在CR中为您的集群设置spec.secretName到不同的地方。当你自己创建对象时,它应该匹配以下简单的格式:
apiVersion:v1种类:秘密元数据:名字:cluster1-secrets类型:不透明的stringData:根:root_passwordxtrabackup:backup_passwordraybet雷竞技竞猜在线官网:raybet雷竞技竞猜在线官网monitor_passwordpmmserverkey:my_pmm_server_key操作符:operator_password复制:replication_password协调器:orchestrator_password心跳:heartbeat_password
如你所见,因为我们使用stringData类型时,每个键/值对的所有值都以纯文本格式声明,方便用户的观点。但是生成的Secrets对象包含存储为的密码数据-即base64编码的字符串。如果要更新任何字段,则需要将值编码为base64格式。要做到这一点,您可以运行返回-n "password" | base64——wrap=0(或只是Echo -n "password" | base64(在苹果macOS的情况下)在本地shell中获取有效值。例如,将Admin用户的密码设置为new_password在cluster1-secrets对象可以用以下命令完成:
美元kubectl补丁秘密/ cluster1-secrets- p“{”数据”:{“根”:“$ (回声- nnew_password|base64——包装=0)‘}}
美元kubectl补丁秘密/ cluster1-secrets- p“{”数据”:{“根”:“$ (回声- nnew_password|base64)‘}}
密码轮换策略和定时¶
当用户秘密发生变化时,操作员创建必要的事务来更改密码。这种轮换几乎立即发生(延迟可能长达几秒钟),除了更改密码之外,不需要采取任何操作。
警告
请不要改变secretName选项,在secrets对象本身内部进行更改。
在MySQL中标记系统用户¶
从MySQL 8.0.16开始,实现了一个名为Account Categories的新功能,它允许我们标记系统用户。看到关于该特性的官方文档了解更多详情。