查询postgres11.11库posrgis权限
时间: 2024-09-19 19:07:21 浏览: 25
在PostgreSQL 11.11中,权限管理是通过系统视图和系统函数来进行的。如果你想查询关于PostGIS的权限,你应该关注以下几个方面:
1. **pg_catalog.pg_database**:这个视图包含了所有数据库的信息,你可以查找特定数据库(如"posrgis")的owner(拥有者)及其权限设置。
```sql
SELECT datdba AS owner, rolname FROM pg_database WHERE datname = 'posrgis';
```
这将返回拥有"posrgis"数据库的角色名字。
2. **pg_catalog.pg_class** 和 **pg_class.relperm**:对于PostGIS的对象(如表、函数等),权限通常会应用到它们所属的表上。你可以查看特定表的权限分配。
```sql
SELECT relname, objacl FROM pg_class WHERE relname = 'your_table';
```
这里的objacl列包含了对象的访问控制列表,可以进一步分析权限。
3. **pg_catalog.pg_role** 和 **pg_auth_members**:如果权限是通过角色分配的,你需要找到与PostGIS相关的角色,并检查它们的权限设置。
```sql
SELECT rolname, rolcanlogin, rolsuper, rolinherit, rolrepl, rolcreatedb, rolcreaterole, rolcanconnect, rolcanlogout, rolconfig, rolpassword
FROM pg_auth_members JOIN pg_roles ON pg_auth_members.member = pg_roles.oid
WHERE rolname IN (SELECT rolname FROM pg_roles WHERE rolcancreategisdb);
```
这将返回有`cancreategisdb`权限的角色列表。