在“创建数据库”命令中指定表空间时,为什么会收到PostgreSQL权限错误?


11

当我在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实例,以防万一。

Answers:


8

至少在pgAdmin v4中,这是窍门:将表空间留空。创建数据库时它将默认为“ pg_default”。


1
有效的,thanx
Alex Buzunov

1
救了我的命-谢谢!@HuggieRich应该接受它!
罗恩
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.