forked from radondb/radondb-mysql-kubernetes
-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
docs: Add user management tutorial. radondb#245
- Loading branch information
1 parent
7e85f4f
commit 4f7c502
Showing
1 changed file
with
125 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,125 @@ | ||
# 使用 MysqlUser CRD 管理 MySQL用户 | ||
|
||
## 前提条件 | ||
|
||
* 已部署 [RadonDB MySQL 集群](docs/kubernetes/deploy_radondb-mysql_operator_on_k8s.md)。 | ||
|
||
## 创建用户帐号 | ||
|
||
### 1. 校验 CRD | ||
|
||
使用如下指令,将查看到名称为 `mysqlusers.mysql.radondb.com` 的 CRD。 | ||
|
||
```plain | ||
kubectl get crd | grep MysqlUser | ||
mysqlusers.mysql.radondb.com 2021-09-21T09:15:08Z | ||
``` | ||
|
||
### 2. 创建 Secret | ||
|
||
RadonDB MySQL 使用 K8S 中的 [Secret](https://kubernetes.io/docs/concepts/configuration/secret/) 对象保存用户的密码。 | ||
|
||
使用如下指令,将使用[示例配置](#Secret)创建一个名为 `sample-user-password` 的 Secret。 | ||
|
||
```plain | ||
kubectl apply -f https://raw.githubusercontent.com/radondb/radondb-mysql-kubernetes/main/config/samples/mysqluser_secret.yaml | ||
``` | ||
|
||
### 3. 创建用户 | ||
|
||
使用如下指令,将使用[示例配置](#MysqlUser)创建一个名为 `sample_user` 的用户。 | ||
|
||
```plain | ||
kubectl apply -f https://raw.githubusercontent.com/radondb/radondb-mysql-kubernetes/main/config/samples/mysql_v1alpha1_mysqluser.yaml | ||
``` | ||
|
||
> 注意;直接修改 spec.user(用户名) 等同于以新用户名创建一个用户。如需创建多个用户,请确保 metadata.name(CR 实例名) 与 spec.user(用户名)一一对应。 | ||
## 修改用户帐号 | ||
|
||
用户帐号信息由 spec 字段中参数定义,目前支持: | ||
|
||
* 修改 `hosts` 参数。 | ||
* 新增 `permissions` 参数。 | ||
|
||
### 授权 IP | ||
|
||
允许使用用户帐号的 IP,通过 `hosts` 字段参数定义。 | ||
|
||
* % 表示所有 IP 均可访问。 | ||
* 可修改一个或多个 IP。 | ||
|
||
```plain | ||
hosts: | ||
- "%" | ||
``` | ||
|
||
### 用户权限 | ||
|
||
用户帐号数据库访问权限,通过 MysqlUser 中 permissions 字段参数定义。可通过新增 permissions 字段参数值,实现用户帐号权限的新增。 | ||
|
||
```plain | ||
permissions: | ||
- database: "*" | ||
tables: | ||
- "*" | ||
privileges: | ||
- SELECT | ||
``` | ||
|
||
* `database` 参数表示该用户帐号允许访问的数据库。* 代表允许访问集群所有数据库。 | ||
* `tables` 参数表示该用户帐号允许访问的数据库表。 * 代表允许访问数据库中所有表。 | ||
* `privileges` 参数表示该用户帐号被授权的数据库权限。更多权限说明,请参见 [Privileges Supported by MySQL]( [https://dev.mysql.com/doc/refman/5.7/en/grant.html)](https://dev.mysql.com/doc/refman/5.7/en/grant.html))。 | ||
|
||
## 删除用户帐号 | ||
|
||
使用如下指令将删除使用默认配置创建的 MysqlUser CR。 | ||
|
||
```plain | ||
kubectl delete mysqluser sample-user-cr | ||
``` | ||
|
||
>说明:删除 MysqlUser CR 会自动删除 CR 对应的 MySQL 用户。 | ||
## 示例配置 | ||
|
||
### Secret | ||
|
||
```plain | ||
apiVersion: v1 | ||
kind: Secret | ||
metadata: | ||
name: sample-user-password # 密钥名称。应用于 MysqlUser 中的 secretSelector.secretName。 | ||
data: | ||
pwdForSample: UmFkb25EQkAxMjMKIA== #密钥键,应用于 MysqlUser 中的 secretSelector.secretKey。示例密码为 base64 加密的 RadonDB@123 | ||
# pwdForSample2: | ||
# pwdForSample3: | ||
``` | ||
|
||
### MysqlUser | ||
|
||
```plain | ||
apiVersion: mysql.radondb.com/v1alpha1 | ||
kind: MysqlUser | ||
metadata: | ||
name: sample-user-cr # 用户 CR 名称,建议使用一个用户 CR 管理一个用户。 | ||
spec: | ||
user: sample_user # 需要创建/更新的用户的名称。 | ||
hosts: # 支持访问的主机,可以填多个,% 代表所有主机。 | ||
- "%" | ||
permissions: | ||
- database: "*" # 数据库名称,* 代表所有数据库。 | ||
tables: # 表名称,* 代表所有表。 | ||
- "*" | ||
privileges: # 权限,参考 https://dev.mysql.com/doc/refman/5.7/en/grant.html。 | ||
- SELECT | ||
userOwner: # 指定被操作用户所在的集群。不支持修改。 | ||
clusterName: sample | ||
nameSpace: default # radondb mysql 集群所在的命名空间。 | ||
secretSelector: # 指定用户的密钥和保存当前用户密码的键。 | ||
secretName: sample-user-password # 密钥名称。 | ||
secretKey: pwdForSample # 密钥键,一个密钥可以保存多个用户的密码,以键区分。 | ||
``` |