IBM Cloud Docs
管理用户、角色和权限

管理用户、角色和权限

MySQL 5.7 使用角色系统来管理数据库许可权。 从 UI 和 MySQL Shell 创建用户。 从 UI 创建的用户具有与 admin 几乎相同的特权,但无法创建其他用户。 由于管理员同时具有 CREATE USERGRANT 选项,因此可以创建用户并为其提供所有特权,包括创建新用户的特权。

mysql> SELECT DISTINCT GRANTEE FROM information_schema.user_privileges;
+-----------------------------+
| GRANTEE                     |
+-----------------------------+
| 'ibm'@'localhost'           |
| 'mysql.session'@'localhost' |
| 'mysql.sys'@'localhost'     |
| 'ibm-backup'@'localhost'    |
| 'admin'@'%'                 |
| 'ibm-replication'@'%'       |
| 'ibm-monitor'@'%'           |
+-----------------------------+
+-----------------+
| user            |
+-----------------+
| admin           |
| ibm-monitor     |
| ibm-replication |
| ibm             |
| ibm-backup      |
| mysql.session   |
| mysql.sys       |
+-----------------+

以下用户由 IBM Cloud 维护,不应由您变更或删除:


| ibm-monitor     |
| ibm-replication |
| ibm             |
| ibm-backup      |

在 IBM Cloud中供应新部署时,将自动为您提供 admin 用户以访问和管理 MySQL。

使用 Cloud Databases CLI 插件Cloud Databases API 在用户界面的_服务凭据_中添加用户。

用户管理命令

出于安全原因,建议您不要对 mysql.user 表运行 DML (数据操作语言) 查询。 为了防止更改 mysql.user 表,您应该使用 DML 查询来管理用户。

使用 CREATE USERALTER USERRENAME USERDROP USER 之类的命令来管理用户。

可以通过运行以下命令来抽取包含其主机信息但没有认证信息和密码散列的用户列表:

mysql> SELECT DISTINCT GRANTEE FROM information_schema.user_privileges;

admin 用户

在 IBM Cloud中供应新部署时,会自动为您提供管理用户以访问和管理 MySQL。 设置管理密码 后,请使用该密码来连接到部署。

admin 在数据库中创建资源 (如表) 时,admin 拥有该对象。 通过 UI 创建的用户有权访问 *.*,这意味着任何新创建的用户都能够自动查看任何数据库。 使用 MySQL sh 或修改 UI 创建的用户的许可权以限制访问权。 要限制许可权,请除去全局特权 (如果已启用),并将特权授予期望给定用户有权访问的数据库或数据库集。

请先设置管理密码,然后再使用该密码进行连接。

在用户界面中设置管理员密码

IBM Cloud 控制面板的资源列表中选择实例,通过用户界面设置管理员密码。 然后,选择 设置。 下一步,选择更改数据库管理密码

在 CLI 中设置管理员密码

使用 IBM Cloud CLI Cloud Databases 插件中的 cdb user-password 命令来设置管理密码。

例如,要设置名为 example-deployment 的部署的管理密码,请使用以下命令:

ibmcloud cdb user-password example-deployment admin <newpassword>

在应用程序接口中设置管理员密码

显示在服务的“概览”面板“部署详情”部分的基础端点提供了通过 API 访问此部署的基础 URL。 将其与 Set specified user 's password 端点配合使用以设置管理密码。

curl -X PATCH `https://api.{region}.databases.cloud.ibm.com/v5/ibm/deployments/{id}/users/admin` \
-H `Authorization: Bearer <>` \
-H `Content-Type: application/json` \
-d `{"password":"newrootpasswordsupersecure21"}` \

其他 ibm 用户

ibmibm-replication 帐户是部署上的唯一超级用户。 超级用户帐户不可供您使用。 这些用户是内部管理帐户,用于管理复制,度量和其他功能,以确保部署的稳定性。

使用 mysql 创建的用户

您可以完全绕过通过 IBM Cloud 创建用户,并使用 mysql 直接在 MySQL 中创建用户。 这样,您就可以使用 MySQL's 本地 角色和用户管理。 在 mysql 中创建的用户/角色必须手动设置其所有特权以及对其创建的对象的特权。

直接在 MySQL 中创建的用户不会出现在_服务证书_中,但您可以选择 添加

请注意,这些用户未与 IAM 控件集成,即使添加到 _服务凭证_也是如此。

用户对表的访问权

虽然无法删除 mysql database,但用户可以删除表,包括包含内部用户的 mysql.users 表。 客户机不应删除属于 mysql database 的任何表,因为此操作可能会导致构成中断,只能使用时间点恢复 (PITR) 来解决此问题。

由于客户机删除了系统表,因此 IBM Cloud 不会在形成中断时发出警报。

更多用户和连接字符串

对 Databases for MySQL 部署的访问权不限于管理用户。 您可以使用_服务凭据_面板、IBM CLI 或通过 IBM Cloud Databases API 创建用户。

部署上的所有用户都可以使用连接字符串,包括公共或专用端点的连接字符串。

创建用户时,将为其分配某些数据库角色和特权。 这些特权包括登录,创建数据库和创建其他用户的能力。 更多信息,请参阅 管理用户、角色和权限 页面。

服务证书中创建用户

  1. 导航至您服务的服务仪表板。
  2. 单击_服务证书_打开_服务证书_面板。
  3. 单击新建凭证
  4. 为新证书选择一个描述性名称。
  5. (可选) 指定新凭证应使用公共端点还是专用端点。 在_添加内联配置参数_字段中使用 { "service-endpoints": "public" } / { "service-endpoints": "private" },即可使用指定的端点生成连接字符串。 未强制使用端点。 它仅控制连接字符串中的主机名。 缺省情况下会生成公共端点。
  6. 单击“**添加 **”提供新凭证。 MySQL 数据库中的用户名、密码和相关数据库用户会自动生成。

新凭证会出现在表格中,连接字符串会以 JSON 格式出现在“查看凭证”下的“点击复制”字段中。

从命令行创建用户

如果通过 IBM Cloud CLI 和 云数据库插件 管理服务,那么可以使用 cdb user-create 创建新用户。 例如,要为 "example-deployment" 创建新用户,请使用以下命令。

ibmcloud cdb user-create example-deployment <newusername> <newpassword>

任务完成后,您可以使用 ibmcloud cdb deployment-connections 命令检索新用户的连接字符串。

从 API 创建用户

在“概览”面板上显示的服务_部署详细信息_中的基础_端点_提供了通过 API 访问此部署的基础 URL。 要创建和管理用户,请使用 /users 端点的基本 URL。

curl -X POST 'https://api.{region}.databases.cloud.ibm.com/v4/ibm/deployments/{id}/users' \
-H "Authorization: Bearer $APIKEY" \
-H "Content-Type: application/json" \
-d '{"username":"jane_smith", "password":"newsupersecurepassword"}'

完成任务后,您可以从 /users/{userid}/connections 端点检索新用户的连接字符串。

将用户添加到_服务证书_

从 CLI 创建新用户不会自动将该用户的连接字符串填充到_服务凭据_中。 如果要将其添加到该处,那么可以使用现有用户信息创建新凭证。

在 JSON 字段中输入用户名和密码_添加内联配置参数_,或指定一个存储 JSON 信息的文件。 例如,在 {"existing_credentials":{"username":"Robert","password":"supersecure"}} 字段中输入用户名 "Robert "和密码 "supersecure",就会在连接字符串中生成_服务证书_。

从现有用户生成凭证不会检查或创建该用户。