MySQL 用户简介

本页面介绍了 Cloud SQL 如何与 MySQL 用户配合工作。MySQL 用户账号通过控制对 MySQL 数据库的访问来提供安全性。

有关 MySQL 用户的完整文档,请参阅 MySQL 文档。如需了解如何创建和管理 Cloud SQL 用户,请参阅创建和管理用户

您为什么需要 MySQL 用户账号

MySQL 用户账号让您能够登录并管理您的 Cloud SQL 实例。用户账号也是应用访问您的实例所必需的信息。

超级用户限制

在 Cloud SQL 中,客户无法创建或访问具有超级用户特性的用户。

由于 Cloud SQL for MySQL 是一项代管式服务,因此它会限制对某些系统过程和表的访问。

某些架构表的数据操纵语言 (DML) 和数据定义语言 (DDL) 权限受到限制。

下面列出了 mysql 架构中需要写入权限的 MySQL 5.6 系统表:audit_log_rules_expandedaudit_log_supported_opsaudit_log_rulescloudsql_replica_indexdbeventfuncheartbeatpluginprocusertables_priv

对于 MySQL 5.7,列表如下: audit_log_rules_expandedaudit_log_supported_opsaudit_log_rulescloudsql_replica_indexdbeventfuncgtid_executedheartbeatpluginprocusertables_priv

如需了解 MySQL 8.0 的相关信息,请参阅 MySQL 8.0 用户权限 (cloudsqlsuperuser)

MySQL 用户账号格式

MySQL 用户账号有两个组成部分:用户名和主机名。用户名称标识用户,主机名称指定用户可用于连接的主机。用户名和主机名组合起来构成一个用户账号:

'<user_name>'@'<host_name>'

您可以为主机名指定特定的 IP 地址或地址范围,或使用百分号(“%”)使主机名不受限制。请注意,如果使用 IP 地址连接到实例,那么即使用户的主机名不受限制,也必须将您的客户端 IP 地址添加为已获授权的地址

用户账号由用户名和主机名同时定义。例如,'user'@'%' 是与 'user'@'localhost' 不同的用户账号。

默认的 MySQL 用户

创建后,MySQL 实例有一个默认用户账号:'root'@'%'。首次使用此账号连接和管理数据库实例。默认用户拥有除 SUPERFILE 以外的所有数据库权限。在 Cloud SQL 中,您无法重命名 'root'@'%'

root'@'% 的默认设置是没有密码,MySQL 不要求您为 root'@'% 使用密码。但是,由于大多数 MySQL 安装中都存在 root'@'%,因此 root'@'% 用户是未经授权访问的常见目标。一旦获得对您的实例的访问权限,任何人员或程序都可以几乎无限制地访问和控制您的实例和数据。因此,我们建议您使用安全系数高的密码配置 root'@'% 用户或删除此用户。如需有关配置默认用户账号的帮助,请参阅配置默认用户账号

系统用户

系统用户有七个:

  • root@localhostroot@127.0.0.1root@::1

    用于提供代管式数据库服务。

  • cloudsqlreplica@%

    用作副本的复制用户。

  • cloudsqlimport@localhost

    用于数据导入。

  • cloudsqlexport@localhost

    用于数据导出。

  • cloudsqloneshot

    用于其他数据库操作。

  • cloudsqlapplier@localhost

    用于外部服务器副本中的复制操作或跨主要版本复制。

  • cloudsqlobservabilityadmin

    用于数据库可观测性。

您不能删除或修改这些用户。

其他 MySQL 用户账号

您也可以创建其他 MySQL 用户账号,这是一种很好的做法,它让您可以为不同目的使用不同的 MySQL 用户账号。

您可以创建受限主机名的用户账号,或使用 SQL 命令限制用户账号的权限。

如需详细了解用户账号名称,请参阅 MySQL 文档。 如需创建新的 MySQL 用户,请参阅创建用户

MySQL 5.6 和 5.7 用户权限

MySQL 提供了可以为用户授予或移除的细化权限。这让您可以控制用户能在您的实例上执行的操作。

使用 Cloud SQL 创建的用户拥有与默认 MySQL 用户相同的权限。您可以使用 GRANTREVOKE 语句更改他们的权限。

使用 mysql 客户端创建用户时,您必须使用 GRANT 语句明确授予该用户权限。

如需详细了解 MySQL 支持的权限,请参阅 MySQL 提供的权限

MySQL 8.0 用户权限 (cloudsqlsuperuser)

在 MySQL 8.0 for Cloud SQL 中,当您创建新用户时,用户会被自动授予 cloudsqlsuperuser 角色。cloudsqlsuperuser 角色是一个包含多个 MySQL 权限的 Cloud SQL 角色。此角色会向用户授予所有 MySQL 静态权限,但 SUPERFILE 除外。

cloudsqlsuperuser 角色仅支持以下基于 MySQL 8.0 次要版本的动态权限

MySQL 8.0.18

MySQL 8.0.26

MySQL 8.0.27

MySQL 8.0.28

MySQL 8.0.29(已弃用)

MySQL 8.0.30 及更高版本

cloudsqlsuperuser 角色不支持 mysql 数据库上的任何数据定义语言 (DDL) 操作。

如需查看 cloudsqlsuperuser 角色被授予的完整权限列表,请在 mysql 客户端中执行 SHOW GRANTS 语句:

SHOW GRANTS FOR 'cloudsqlsuperuser'

后续步骤