无法以非超级用户身份在公共方案中创建表
postgres -超级用户。
我所做的:
ALTER SCHEMA public owner to postgres;
CREATE USER admin WITH PASSWORD 'my-password';
GRANT USAGE, CREATE ON SCHEMA public TO postgres;
GRANT USAGE, CREATE ON SCHEMA public TO admin;
CREATE DATABASE mydb;
GRANT ALL ON DATABASE mydb TO admin;
特权:
postgres=# \dn+
List of schemas
Name | Owner | Access privileges | Description
--------+----------+----------------------+------------------------
public | postgres | postgres=UC/postgres+| standard public schema
| | =UC/postgres +|
| | admin=UC/postgres |
(1 row)
我得到的:x1c 0d1x
如何在公共模式中创建表?...
纽费格
2条答案
按热度按时间x3naxklr1#
第一条评论指出了发生这种情况的最可能原因。引用发布公告:
PostgreSQL 15还**从
public
(或默认)模式中撤销除数据库所有者之外的所有用户的CREATE
权限。您的修复不起作用的原因是,您在数据库
postgres
上针对用户admin
对方案public
的权限执行的所有操作仅涉及数据库postgres
中的该方案。数据库postgres
上的方案public
与新创建的mydb
上的方案public
不同。此外,这:
admin
现在可以删除数据库,例如,仍然不能在模式public
中创建表。我猜您希望使admin
也成为mydb
的所有者,在这种情况下,您需要添加或者您需要在
mydb
上重复您的GRANT USAGE, CREATE ON SCHEMA public TO admin;
。这里有一些关于PostgreSQL 15更改所基于的 * 安全模式使用模式 * 的更多文档。
shyt4zoc2#
您已在授予
public
方案的权限之后创建了数据库。您的admin
用户可能正在使用新数据库,该数据库仅具有默认权限