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

问题描述 投票:0回答:2

一周前,我使用 MySQL 5.7 制作测试 MySQL 服务器并应用权限时没有遇到任何问题,但尝试新的 8.0 版本时,我似乎无法轻松更改权限(如果有的话)。我以 root 身份远程登录,但本地云 shell 实例也执行相同操作。

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

我的方法:

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

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

SHOW GRANTS FOR 'test_user'@'%';
返回
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 还很陌生,所以我不确定这是我的错还是只是一个错误。谢谢!

mysql google-cloud-platform google-cloud-sql
2个回答
2
投票

首先我要指出的是,

GRANT USAGE ON *.* TO test_user@%
的意思是相反的,即表示该用户没有权限! (更多信息:Mysql参考

其次,我认为导致错误的是 ALL PRIVILEGES 关键字,它可能已在 v8.0 中删除,因此只需在创建用户后直接授予他对表/数据库所需的权限即可。


0
投票

这可能是一个迟到的答案。不过,我会分享我的答案,以防其他人仍在寻找答案。

首先,我们需要撤销该用户的 cloudsuperuser 权限,因为使用内置身份验证添加的任何用户都将具有与 cloudsqlsuperuser 相同的权限。

REVOKE `cloudsqlsuperuser`@`%` FROM `your_user`@`%`

之后,我们可以为该用户授予我们想要的任何权限。

GRANT SELECT ON `your_db_schema`.* TO `your_user`@`%`;
© www.soinside.com 2019 - 2024. All rights reserved.