Postgresql

不能使用 dropdb 刪除 PostgreSQL 數據庫?

  • September 10, 2021

我不能使用刪除數據庫

dropdb

我收到此錯誤:

ERROR:  must be owner of database 

但是psql \l我看到使用者管理員(刪除數據庫的那個)

admin=CTc/postgres

除了我要刪除的數據庫。

Linux 中的 PostgreSQL 9.x 有什麼問題?

您在此處看到的psql \l僅意味著 Postgres 角色admin已被 Postgres 角色授予了幾個特權postgres- 這是預設的超級使用者,可能是數據庫的實際所有者

引用手冊:

如果超級使用者選擇發出GRANTorREVOKE命令,則執行該命令就好像它是由受影響對象的所有者發出的一樣。特別是,通過此類命令授予的權限似乎已由對象所有者授予。

授予的特權是

C -- CREATE
c -- CONNECT
T -- TEMPORARY

CONNECTTEMPORARYon databases 也是 的預設預設權限PUBLIC,但我們在此處看到的內容已被明確授予。

沒有給出刪除數據庫的特權,它不能。只有數據庫的所有者才能刪除它。(或超級使用者。)因此錯誤消息:

錯誤:必須是數據庫的所有者

通常,每個 shell 使用者都使用同名的 Postgres 角色進行連接。因此,鑑於您擁有必要的sudo權利,應該這樣做:

sudo -u postgres dropdb my_database_name_here

或者切換到 shell 使用者postgres,如下所示:

但是您可能必須先斷開其他使用者的連接。看:

引用自:https://dba.stackexchange.com/questions/185472