新手指南:Django 與 PostgreSQL 的資料庫設定與密碼管理

更新日期: 2024 年 12 月 10 日

本文為 Django 連接 PostgreSQL 基學教學,第 2 篇

  1. 新手指南:Python 與 PostgreSQL 的強力橋樑——psycopg 驅動程式
  2. 新手指南:Django 與 PostgreSQL 的資料庫設定與密碼管理 👈 所在位置

在使用 Django 與 PostgreSQL 開發應用程式時,正確的資料庫配置是成功連接的關鍵。

除了在 Django 的 settings.py 文件中進行配置,您還需要在 PostgreSQL 中手動建立資料庫,並妥善管理密碼與權限。

本篇文章將詳細介紹資料庫建立與配置的流程,以及常見的密碼相關問題,幫助新手快速解決 Django 與 PostgreSQL 的整合問題。


連接前需要注意的事項

在 Django 的 settings.py 文件中設置資料庫配置只是第一步,連接資料庫之前,請確保以下兩點:

  1. PostgreSQL 已啟動
    確保 PostgreSQL 伺服器正在運行。如果伺服器未啟動,即使配置正確,Django 也無法連接到資料庫。
  2. 資料庫已建立
    Django 無法自動建立資料庫,您需要手動在 PostgreSQL 中建立一個資料庫供 Django 使用。

如何在 PostgreSQL 中建立資料庫

方法 1:使用命令列(psql)

  1. 登錄到 PostgreSQL:
 psql -U postgres
  1. 建立資料庫:
 CREATE DATABASE mydb; -- 替換 "mydb" 為您要的資料庫名稱
  1. 建立用戶(如果需要):
CREATE USER myuser WITH PASSWORD 'mypassword';
  1. 賦予用戶權限:
GRANT ALL PRIVILEGES ON DATABASE mydb TO myuser;

方法 2:使用 pgAdmin

  1. 打開 pgAdmin 並連接到伺服器。
  2. 右鍵點擊「Databases」,選擇「Create」>「Database」。
  3. 填寫資料庫名稱(如 mydb),點擊「Save」。

完成資料庫建立後,您需要在 settings.py 中配置與此資料庫匹配的設定。


密碼相關問題與解決方法

為什麼需要輸入密碼?

當您執行 Django 的資料庫操作(如 python manage.py migrate)時,Django 透過 psycopg 驅動程式連接 PostgreSQL。如果配置中未正確設置密碼,或 PostgreSQL 用戶需要身份驗證,系統會提示輸入密碼。

密碼的配置方式

方法 1:在 settings.py 中配置密碼

在 Django 的 settings.py 中,將資料庫密碼設置為用戶的密碼:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql',
        'NAME': 'mydb',         # 資料庫名稱
        'USER': 'myuser',       # 用戶名稱
        'PASSWORD': 'mypassword',  # 資料庫密碼
        'HOST': 'localhost',    # 伺服器地址(默認為 localhost)
        'PORT': '5432',         # 資料庫埠號(默認為 5432)
    }
}

方法 2:修改 PostgreSQL 用戶密碼

如果您忘記密碼,可以重新設置:

  1. 登錄到 PostgreSQL:
 psql -U postgres
  1. 修改用戶密碼:
 ALTER USER myuser WITH PASSWORD 'newpassword';

方法 3:使用 .pgpass 文件(可選)

在用戶主目錄下建立 .pgpass 文件,儲存連接憑據,避免每次輸入密碼:

  • 文件位置
    • Linux/macOS~/.pgpass
    • Windows%APPDATA%\postgresql\pgpass.conf
  • 文件內容格式
hostname:port:database:username:password 
  • 範例:
localhost:5432:mydb:myuser:mypassword
  • 設定完成後,確保檔案權限為只讀:
chmod 600 ~/.pgpass

是否可以省略密碼?

在開發環境中,您可以配置 PostgreSQL 跳過密碼驗證:

  1. 修改 pg_hba.conf 文件,找到類似以下的行:
local all all md5 
  1. md5 修改為 trust
local all all trust
  1. 重啟 PostgreSQL 服務:
sudo systemctl restart postgresql

注意:在生產環境中不建議使用 trust,因為它會跳過密碼驗證,可能造成安全風險。


總結

  1. 手動建立資料庫:在 PostgreSQL 中,您需要提前建立資料庫並配置相應用戶與權限。
  2. 正確配置密碼:確保在 Django 的 settings.py 中配置正確的密碼,或重新設置 PostgreSQL 用戶密碼。
  3. 簡化密碼驗證:可以通過 .pgpass 文件或修改 pg_hba.conf 設置來避免頻繁輸入密碼,但需注意安全性。

正確完成以上步驟,您就能順利地將 Django 與 PostgreSQL 整合,進行資料庫操作。如有其他疑問,請隨時尋求幫助!

Similar Posts