MySQL Google Cloud SQL 上的 8.0:如何设置每个数据库的权限

MySQL 8.0 on Google Cloud SQL: How to set per-database permissions

我在 Google 云 SQL 上有一个 MySQL 8.0 数据库。我有两个应用程序在同一个 MySQL 实例上访问两个不同的数据库。我正在尝试设置访问控制,以便每个应用程序都有自己的用户,并且该用户只能访问其中一个数据库。但是,当我使用 Cloud SQL 界面创建新用户时,该用户可以访问 MySQL 实例上的所有数据库。

Google documentation 给出以下信息:

In MySQL 8.0 for Cloud SQL, when you create a new user, the user is automatically granted the cloudsqlsuperuser role. The cloudsqlsuperuser role is a Cloud SQL role that contains a number of MySQL privileges. This role gives the user all of the MySQL static privileges, except for SUPER and FILE.

是否可以从用户中删除此 cloudsqlsuperuser 角色并单独授予用户对数据库的访问权限?这是怎么做到的?

如果您使用云 SQL API,您将在云 SQL 级别添加用户(作为根用户,超级用户角色)。

如果您想在数据库中管理用户和权限,您必须登录数据库(使用超级用户帐户)并在数据库中创建您的用户并在数据库中授予他们权限。你不能在外面这样做(通过 API 调用、terraform 或其他方式)。

是的,自动化很无聊。