postgres 授权模式下的表给用户
时间: 2023-08-20 11:03:54 浏览: 53
要授权一个表给用户,需要使用 PostgreSQL 的 GRANT 命令。GRANT 命令允许你授权一个或多个角色对一个数据库对象(比如表)进行某些操作(比如 SELECT、INSERT、UPDATE 等)。
假设你有一个表名为 employees,你想授权一个用户或角色名为 bob 可以 SELECT 这个表。下面是授权的命令:
```
GRANT SELECT ON employees TO bob;
```
如果你想授权多个操作,可以在 GRANT 命令后面添加多个操作,用逗号分隔。例如,授权 bob 可以 SELECT 和 INSERT:
```
GRANT SELECT, INSERT ON employees TO bob;
```
此外,还可以使用 WITH GRANT OPTION 选项,允许被授权的用户将授权再授予别人。例如,授权 bob 可以 SELECT 这个表,并且允许 bob 将这个表的 SELECT 权限再授予其他人:
```
GRANT SELECT ON employees TO bob WITH GRANT OPTION;
```
注意,授权命令必须在表所属的数据库中执行,并且必须由具有足够权限的用户执行。如果你需要撤销授权,可以使用 REVOKE 命令。例如,撤销 bob 对 employees 表的 SELECT 权限:
```
REVOKE SELECT ON employees FROM bob;
```
相关问题
postgres 授权某个schema 下所有表给用户
要授权某个schema下的所有表给用户,可以使用以下命令:
```
GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA schema_name TO user_name;
```
其中,`schema_name`是要授权的schema名称,`user_name`是要授权的用户名称。
此命令将授予用户对该schema下所有表的所有权限,包括SELECT、INSERT、UPDATE、DELETE等操作。如果你想授予更细粒度的权限,可以使用GRANT命令来授予特定的权限。
postgres 授权某个schema 下所有表给用户 查权限
要将某个schema下的所有表授权给某个用户,可以使用以下命令:
```
GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA schema_name TO user_name;
```
其中,`schema_name`是要授权的schema的名称,`user_name`是要授权的用户的名称。
如果想要查看某个用户对某个schema下的所有表的权限,可以使用以下命令:
```
SELECT table_name, has_table_privilege('user_name', table_name, 'SELECT') AS select_permission, has_table_privilege('user_name', table_name, 'INSERT') AS insert_permission, has_table_privilege('user_name', table_name, 'UPDATE') AS update_permission, has_table_privilege('user_name', table_name, 'DELETE') AS delete_permission
FROM information_schema.tables
WHERE table_schema = 'schema_name';
```
其中,`user_name`是要查询的用户的名称,`schema_name`是要查询的schema的名称。这个命令会返回一个表格,其中包含了schema下所有表的名称以及该用户对这些表的SELECT、INSERT、UPDATE和DELETE权限。如果返回的值为`true`,表示该用户具有相应的权限;如果返回的值为`false`,则表示该用户不具有相应的权限。