本页面介绍了 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_expanded
、audit_log_supported_ops
、audit_log_rules
、cloudsql_replica_index
、db
、event
、func
、heartbeat
、plugin
、proc
、user
和 tables_priv
。
对于 MySQL 5.7,列表如下:
audit_log_rules_expanded
、audit_log_supported_ops
、audit_log_rules
、cloudsql_replica_index
、db
、event
、func
、gtid_executed
、heartbeat
、plugin
、proc
、user
和 tables_priv
。
如需了解 MySQL 8.0 的相关信息,请参阅 MySQL 8.0 用户权限 (cloudsqlsuperuser)。
MySQL 用户帐号格式
MySQL 用户帐号有两个组成部分:用户名和主机名。用户名称标识用户,主机名称指定用户可用于连接的主机。用户名和主机名组合起来构成一个用户帐号:
'<user_name>'@'<host_name>'
您可以为主机名指定特定的 IP 地址或地址范围,或使用百分号(“%”)使主机名不受限制。请注意,如果使用 IP 地址连接到实例,那么即使用户的主机名不受限制,也必须将您的客户端 IP 地址添加为已获授权的地址。
用户帐号由用户名和主机名同时定义。例如,'user'@'%'
是与 'user'@'localhost'
不同的用户帐号。
默认的 MySQL 用户
创建后,MySQL 实例有一个默认用户帐号:'root'@'%'
。首次使用此帐号连接和管理数据库实例。默认用户拥有除 SUPER 和 FILE 以外的所有数据库权限。在 Cloud SQL 中,您无法重命名 'root'@'%'
。
root'@'%
的默认设置是没有密码,MySQL 不要求您为 root'@'%
使用密码。但是,由于大多数 MySQL 安装中都存在 root'@'%
,因此 root'@'%
用户是未经授权访问的常见目标。一旦获得对您的实例的访问权限,任何人员或程序都可以几乎无限制地访问和控制您的实例和数据。因此,我们建议您使用安全系数高的密码配置 root'@'%
用户或删除此用户。如需有关配置默认用户帐号的帮助,请参阅配置默认用户帐号。
系统用户
系统用户有七个:
root@localhost
、root@127.0.0.1
、root@::1
用于提供代管式数据库服务。
cloudsqlreplica@%
用作副本的复制用户。
cloudsqlimport@localhost
用于数据导入。
cloudsqlexport@localhost
用于数据导出。
cloudsqloneshot
用于其他数据库操作。
您不能删除或修改这些用户。
其他 MySQL 用户帐号
您也可以创建其他 MySQL 用户帐号,这是一种很好的做法,它让您可以为不同目的使用不同的 MySQL 用户帐号。
您可以创建受限主机名的用户帐号,或使用 SQL 命令限制用户帐号的权限。
如需详细了解用户帐号名称,请参阅 MySQL 文档。 如需创建新的 MySQL 用户,请参阅创建用户。
MySQL 5.6 和 5.7 用户权限
MySQL 提供了可以为用户授予或移除的细化权限。这让您可以控制用户能在您的实例上执行的操作。
使用 Cloud SQL 创建的用户拥有与默认 MySQL 用户相同的权限。您可以使用 GRANT
或 REVOKE
语句更改他们的权限。
使用 mysql
客户端创建用户时,您必须使用 GRANT
语句明确授予该用户权限。
如需详细了解 MySQL 支持的权限,请参阅 MySQL 提供的权限。
MySQL 8.0 用户权限 (cloudsqlsuperuser
)
在 MySQL 8.0 for Cloud SQL 中,当您创建新用户时,用户会被自动授予 cloudsqlsuperuser
角色。cloudsqlsuperuser
角色是一个包含多个 MySQL 权限的 Cloud SQL 角色。此角色会向用户授予所有 MySQL 静态权限,但 SUPER
和 FILE
除外。
cloudsqlsuperuser
角色仅支持以下动态权限:
cloudsqlsuperuser
角色不支持 mysql
数据库上的任何数据定义语言 (DDL) 操作。
如需查看 cloudsqlsuperuser
角色被授予的完整权限列表,请在 mysql
客户端中执行 SHOW GRANTS
语句:
SHOW GRANTS FOR 'cloudsqlsuperuser'
后续步骤
- 为实例配置
root
用户帐号。 - 创建和管理用户。
- 创建和管理数据库。
- 查看关于 MySQL 用户的 MySQL 文档。
- 请参阅关于 MySQL 所提供权限的 MySQL 文档。
- 了解连接到实例的选项。