Mer*_*ton 51 sql postgresql debian postgresql-15
无法以非超级用户身份在公共架构中创建表
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;
Run Code Online (Sandbox Code Playgroud)
特权:
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)
Run Code Online (Sandbox Code Playgroud)
我得到了什么:

如何在公共模式中创建表?
Zeg*_*rek 117
PostgreSQL 15 还撤销了
CREATE除(或默认)模式中的数据库所有者之外的所有用户的权限public。
您的修复不起作用的原因是您对数据库执行的postgres有关用户admin模式权限的所有操作public仅涉及数据库中的该模式postgres。public数据库上的架构与新创建的postgres架构不同。publicmydb
另外,这个:
GRANT ALL ON DATABASE mydb TO admin;
Run Code Online (Sandbox Code Playgroud)
授予数据库本身的权限,而不是数据库内的内容。admin例如,现在可以删除数据库,但仍然无法在 schema 中创建表public。我的猜测是您还想成为admin的所有者mydb,在这种情况下您需要添加
ALTER DATABASE mydb OWNER TO admin;
Run Code Online (Sandbox Code Playgroud)
或者你需要重复你的GRANT USAGE, CREATE ON SCHEMA public TO admin;on mydb。
以下是有关 PostgreSQL 15 更改所基于的安全模式使用模式的更多文档。
| 归档时间: |
|
| 查看次数: |
52271 次 |
| 最近记录: |