首頁 > 後端開發 > Python教學 > 如何在 PostgreSQL 中建立資料庫並始終連接到它而不需要超級使用者存取權限

如何在 PostgreSQL 中建立資料庫並始終連接到它而不需要超級使用者存取權限

Mary-Kate Olsen
發布: 2024-12-27 04:48:20
原創
703 人瀏覽過

How to Create a Database and Always Connect to It in PostgreSQL Without Needing Superuser Access

在本指南中,我們將逐步以非超級用戶身份在PostgreSQL 中建立資料庫,分配必要的權限,並確保您可以始終連接到新建立的資料庫,而無需以超級使用者登入。

這對於想要在 PostgreSQL 中管理自己的資料庫而不需要每個操作的管理權限的開發人員或使用者非常有用。

我們將實現什麼:

1.建立一個新資料庫(烏龜示範)。
2.授予非超級使用者角色(testuser)建立和存取資料庫的權限
3.無縫切換到資料庫(tortoise-demo),無需先切換到超級使用者。
4.設定 PostgreSQL 在以 testuser 身分登入時始終自動連線到 tortoise-demo

步驟 1: 向 testuser 授予必要的權限

在以非超級使用者身分建立資料庫之前,您需要確保您的角色(在本例中為 testuser)具有建立資料庫的適當權限。

授予 CREATEDB 權限

預設情況下,新建立的PostgreSQL角色沒有建立資料庫的權限。如果您以超級使用者(例如postgres)身分登錄,則可以向testuser角色授予必要的權限。

1.以超級使用者登入(例如 postgres):

   psql -U postgres
登入後複製
登入後複製

2.授予 CREATEDB 權限給測試使用者:

執行以下 SQL 查詢以允許 testuser 建立新資料庫:

   GRANT CREATEDB TO "testuser";
登入後複製
登入後複製

這將使測試用戶無需超級用戶權限即可建立資料庫。

3.退出超級使用者會話:

   \q
登入後複製
登入後複製

步驟 2:以 testuser 登入並建立資料庫

現在 testuser 角色具有 CREATEDB 權限,您可以以 testuser 身分登入並建立新資料庫。

以測試使用者登入:

要以 testuser 角色登錄,請執行以下指令:

psql -U "testuser" -d postgres -W
登入後複製
登入後複製
  • -U“testuser”選項指定使用者。
  • -d postgres 選項將您連接到 postgres 資料庫(預設管理資料庫)。
  • -W 選項提示輸入您為 testuser 設定的密碼(例如 1234567890)。

建立 tortoise-demo 資料庫:

登入後,建立新的資料庫 tortoise-demo:

CREATE DATABASE "tortoise-demo";
登入後複製
登入後複製

此指令建立一個名為 tortoise-demo 的新資料庫。

設定所有權(可選):

如果要確保 testuser 對資料庫具有完全控制權,可以將資料庫的擁有權指派給 testuser:

   psql -U postgres
登入後複製
登入後複製

此步驟是可選的,但它確保 testuser 角色對 tortoise-demo 資料庫具有完全的管理控制權。

第三步:切換到tortoise-demo資料庫

建立資料庫後,您可能想要切換到新建立的資料庫(tortoise-demo)並開始使用它。

要連接到 tortoise-demo,請執行:

   GRANT CREATEDB TO "testuser";
登入後複製
登入後複製

c 指令將目前會話切換到 tortoise-demo 資料庫。從此時起,您可以執行 SQL 查詢並管理資料庫。

步驟4:自動連接到tortoise-demo,無需每次切換

現在您已經成功建立並切換到 tortoise-demo 資料庫,下一步是自動化此程序。具體來說,我們希望設定 PostgreSQL,以便每次您以 folasayoolayemi 登入時,它都會自動將您連接到 tortoise-demo 資料庫,而無需明確切換。

選項 1:設定 PGDATABASE 環境變量

確保始終連接到 tortoise-demo 資料庫的簡單方法是設定 PGDATABASE 環境變數。該變數告訴 PostgreSQL 連線時預設使用哪個資料庫。

1.為目前會話設定 PGDATABASE:

您可以在目前終端會話中設定環境變量,如下所示:

   \q
登入後複製
登入後複製

這將確保您執行的任何後續 psql 指令預設會自動連線到 tortoise-demo。

2.使更改永久

要使此變更在終端機會話中持續存在,請將匯出指令新增至 shell 的設定檔(.bashrc、.zshrc 等)。

例如,如果您使用 bash,請將以下行加入 ~/.bashrc 檔案:

psql -U "testuser" -d postgres -W
登入後複製
登入後複製

然後,運行:

CREATE DATABASE "tortoise-demo";
登入後複製
登入後複製

這將確保每次開啟新的終端會話時,PostgreSQL 都會自動連線到 tortoise-demo,而無需指定資料庫。

選項 2:始終在連線命令中指定資料庫

如果您不想使用 PGDATABASE 環境變量,您始終可以在 psql 連線命令中指定資料庫名稱:

ALTER DATABASE "tortoise-demo" OWNER TO "testuser";
登入後複製

這樣,您每次連線時都可以直接指定 tortoise-demo 資料庫,無需變更任何配置。

關鍵步驟:

1.授予 CREATEDB 權限:確保 testuser 角色具有建立資料庫所需的權限。
2.建立資料庫:以test使用者登入並建立tortoise-demo資料庫。
3.切換到資料庫:使用c指令切換到tortoise-demo。
4.自動資料庫連線:設定PGDATABASE環境變數預設始終連接到tortoise-demo或在psql指令中明確指定資料庫名稱。

結論:

透過執行以下步驟,您可以以非超級使用者身分在 PostgreSQL 中建立和管理自己的資料庫,而無需每次需要建立新資料庫時都需要超級使用者權限。自動連接到特定資料庫的能力將使您的工作流程更加高效,特別是對於處理特定專案或應用程式的開發人員而言。

感謝您的閱讀...
編碼快樂!

以上是如何在 PostgreSQL 中建立資料庫並始終連接到它而不需要超級使用者存取權限的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:dev.to
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板