如何使用 GCP 的新托管 MySQL 8.0 撤销和授予用户权限

How to revoke and grant permissions to a user with GCP's new managed MySQL 8.0

我在一周前使用 MySQL 5.7 测试 MySQL 服务器并申请权限时没有遇到任何问题,但在试用新的 8.0 版本时,我似乎无法更改权限,因为很容易,如果有的话。我以 root 身份远程登录,但本地云 shell 实例也是如此。

我正在尝试创建一个只能访问一个数据库的新用户,但我似乎无法通过首先撤销所有默认权限的部分。

我的方法:

CREATE USER 'test_user'@'%' IDENTIFIED BY '{password}';

没有报错。 (我也试过通过 GCP 的管理面板创建用户)

SHOW GRANTS FOR 'test_user'@'%'; returns GRANT USAGE ON *.* TO `test_user`@`%` (我假设这意味着新用户拥有完全权限?)

然后,尝试删除所有权限以重新开始用户,

REVOKE ALL PRIVILEGES, GRANT OPTION FROM 'test_user'@'%';

显示:

Error: UNKNOWN_CODE_PLEASE_REPORT: Access denied for AuthId `root`@`%` to database 'mysql'.

我是 Mysql 的新手,所以我不确定这是我的错还是只是一个错误。谢谢!

首先要指出的是,GRANT USAGE ON *.* TO test_user@%的意思是相反的,意思是用户没有权限! (更多信息:Mysql Reference

其次,我认为导致错误的原因是 ALL PRIVILEGES 关键字,它可能已在 v8.0 中删除,因此只需在创建用户后直接授予他您想要的 table/database.