簡體   English   中英

如何更改Postgresql數據庫上公共架構的默認所有者?

[英]how can I change the default owner of the public schema on postgresql database?

當我用我的用戶創建數據庫時,公共模式是用“ postgres”用戶創建的。 我可以在此架構中創建和刪除表,但不能刪除架構或更改所有者。

我正在為php項目安裝Phinx遷移。 這是一個成熟的項目,有很多表。 對於在up()方法上的第一次遷移,我將使用數據庫的模式加載一個sql文件,而在down()方法上,我將刪除模式(表,觸發器,過程...)

class FirstMigration extends AbstractMigration
{
    public function up()
    {
        $schema= file_get_contents('./database/migrations/schemaDB.sql');
        $this->execute($schema);
    }

    public function down()
    {
        $this->execute("DROP SCHEMA public CASCADE");
        $this->execute("CREATE SCHEMA public");
    }
}

回滾時出現錯誤:

特權不足:7錯誤:您必須是公共架構的所有者。

圖片

創建數據庫時,我選擇用戶“ citest”

圖片

但是默認情況下,公共架構的所有者是“ postgres”!

而且我無法更改。

我的用戶是數據庫的所有者,但不是用戶“ postgres”的公共架構的所有者。

public模式的默認用戶由Postgres創建新數據庫時復制的模板數據庫(稱為template1 )設置。 如果要更改新創建的數據庫的默認值,則需要修改template1 例如,您可以從template1 DROP SCHEMA public 現在,您無需通過public就可以開始遷移,因為它不存在。 當然,要執行此操作,您將(至少暫時)使用具有編輯template1權限的用戶登錄。

有關更多信息,請在Postgres郵件列表https://www.postgresql.org/message-id/CAFjNrYu8GqD%3D17DimG9QtWoV1hPviqHxaZp2umWAPkpUOFAGYg%40mail.gmail.com中閱讀此線程。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM