当我在PostgreSQL中创建数据库而未明确指定默认表空间时,创建该数据库没有问题(我以pgsys用户身份登录):
postgres =>创建数据库rich1; 创建数据库 postgres => \ l + 数据库清单 姓名| 业主| 编码| 整理| Ctype | 访问权限| 尺寸 表空间| 描述 ----------- + ---------- + ---------- + ------------- +- ----------- + ------------------------------------- + ----------- + ------------ + ------------------------- ------------------- postgres | pgsys | UTF8 | zh_CN.UTF-8 | zh_CN.UTF-8 | | 7455 kB | pg_default | 默认管理连接数据库 rdsadmin | rdsadmin | UTF8 | zh_CN.UTF-8 | zh_CN.UTF-8 | rdsadmin = CTc / rdsadmin | 无法访问| pg_default | rich1 | pgsys | UTF8 | zh_CN.UTF-8 | zh_CN.UTF-8 | | 7233 kB | pg_default | template0 | rdsadmin | UTF8 | zh_CN.UTF-8 | zh_CN.UTF-8 | = c / rdsadmin | 7345 kB | pg_default | 不可修改的空数据库 :rdsadmin = CTc / rdsadmin template1 | pgsys | UTF8 | zh_CN.UTF-8 | zh_CN.UTF-8 | = c / pgsys | 7345 kB | pg_default | 新数据库的默认模板 :pgsys = CTc / pgsys (5列)
如您所见,数据库已放入pg_default表空间,但是如果我在tablespace子句中指定默认表空间(也仍以pgsys身份登录),则会出现权限错误:
postgres =>创建数据库rich2表空间pg_default; 错误:表空间pg_default的权限被拒绝
这是该用户的权限:
postgres => \ du pgsys 角色清单 角色名称| 属性| 成员 ----------- + ------------- + ----------------- pgsys | 创建角色| {rds_superuser} :创建数据库
这是PostgreSQL错误,但是我应该提到,这是一个AWS Aurora实例,以防万一。