我想授予用户对GCP(谷歌云(上postgres云sql数据库的只读数据库访问权限。例如,我希望用户能够从postico/pg-admin查看数据库表,但不能删除/更新/插入记录。
我授予用户以下角色云SQL客户端(对云SQL实例的连接访问(云SQL查看器(只读访问云SQL资源(
我第一次只试过Coud SQL Viewer,但用户无法从本地计算机访问数据库。
云SQL客户端(对云SQL实例的连接访问(-这是否允许用户编辑数据库记录?如果是,有没有一种方法可以在没有写权限的情况下访问连接?
因此,云SQL上有两个权限概念。有实例(云(级访问和数据库级访问。
您所看到的IAM角色(云SQL客户端(处理实例级别。你能连接到云SQL吗?你能查看项目中的所有数据库吗?等等。写/更新/读取记录的能力在数据库级别。为此,您需要在连接到实例时使用GRANTSQL命令。
点击此处查看GRANT文档:https://www.postgresql.org/docs/9.0/sql-grant.html
GRANT { { SELECT | INSERT | UPDATE | DELETE | TRUNCATE | REFERENCES | TRIGGER }
[,...] | ALL [ PRIVILEGES ] }
ON { [ TABLE ] table_name [, ...]
| ALL TABLES IN SCHEMA schema_name [, ...] }
TO { [ GROUP ] role_name | PUBLIC } [, ...] [ WITH GRANT OPTION ]
首先让我们看看用户拥有什么:显示db_user 的拨款
让我们撤销所有:取消所有特权,授予db_user选项刷新权限
现在,让我们只向用户提供所需的:在数据库名称上授予选择。*到数据库用户
或者您也可以提供:在db_name上授予SELECT、UPDATE、INSERT、DELETE。*到db_user
再次冲洗:刷新权限
并再次检查:显示db_user 的拨款