無法以非超級用戶身份在公共架構中創建表
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)
我得到了什么:

如何在公共模式中創建表?...
新人
uj5u.com熱心網友回復:
您對資料庫執行postgres的有關用戶admin對模式的權限的所有操作public僅涉及資料庫中的該模式postgres。public資料庫上的架構與新創建postgres的架構不同。publicmydb
另外,這個:
GRANT ALL ON DATABASE mydb TO admin;
授予資料庫本身的權限,而不是資料庫內的事物。admin例如,現在可以洗掉資料庫,但仍然無法在 schema 中創建表public。我的猜測是您也想成為admin的所有者mydb,在這種情況下您需要添加
ALTER DATABASE mydb OWNER TO admin;
或者你需要重復你的GRANT USAGE, CREATE ON SCHEMA public TO admin;on mydb。
uj5u.com熱心網友回復:
在授予架構權限后,您已創建資料庫public。您的admin用戶可能正在使用新資料庫,它只有默認權限
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/517934.html
標籤:sqlPostgreSQLDebianpostgresql-15
下一篇:努力對sqlitedb運行查詢
