新手指南:Django 與 PostgreSQL 的資料庫設定與密碼管理
更新日期: 2024 年 12 月 10 日
本文為 Django 連接 PostgreSQL 基學教學,第 2 篇:
- 新手指南:Python 與 PostgreSQL 的強力橋樑——psycopg 驅動程式
- 新手指南:Django 與 PostgreSQL 的資料庫設定與密碼管理 👈 所在位置
在使用 Django 與 PostgreSQL 開發應用程式時,正確的資料庫配置是成功連接的關鍵。
除了在 Django 的 settings.py
文件中進行配置,您還需要在 PostgreSQL 中手動建立資料庫,並妥善管理密碼與權限。
本篇文章將詳細介紹資料庫建立與配置的流程,以及常見的密碼相關問題,幫助新手快速解決 Django 與 PostgreSQL 的整合問題。
連接前需要注意的事項
在 Django 的 settings.py
文件中設置資料庫配置只是第一步,連接資料庫之前,請確保以下兩點:
- PostgreSQL 已啟動
確保 PostgreSQL 伺服器正在運行。如果伺服器未啟動,即使配置正確,Django 也無法連接到資料庫。 - 資料庫已建立
Django 無法自動建立資料庫,您需要手動在 PostgreSQL 中建立一個資料庫供 Django 使用。
如何在 PostgreSQL 中建立資料庫
方法 1:使用命令列(psql)
- 登錄到 PostgreSQL:
psql -U postgres
- 建立資料庫:
CREATE DATABASE mydb; -- 替換 "mydb" 為您要的資料庫名稱
- 建立用戶(如果需要):
CREATE USER myuser WITH PASSWORD 'mypassword';
- 賦予用戶權限:
GRANT ALL PRIVILEGES ON DATABASE mydb TO myuser;
方法 2:使用 pgAdmin
- 打開 pgAdmin 並連接到伺服器。
- 右鍵點擊「Databases」,選擇「Create」>「Database」。
- 填寫資料庫名稱(如
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 用戶密碼
如果您忘記密碼,可以重新設置:
- 登錄到 PostgreSQL:
psql -U postgres
- 修改用戶密碼:
ALTER USER myuser WITH PASSWORD 'newpassword';
方法 3:使用 .pgpass 文件(可選)
在用戶主目錄下建立 .pgpass
文件,儲存連接憑據,避免每次輸入密碼:
- 文件位置:
- Linux/macOS:
~/.pgpass
- Windows:
%APPDATA%\postgresql\pgpass.conf
- Linux/macOS:
- 文件內容格式:
hostname:port:database:username:password
- 範例:
localhost:5432:mydb:myuser:mypassword
- 設定完成後,確保檔案權限為只讀:
chmod 600 ~/.pgpass
是否可以省略密碼?
在開發環境中,您可以配置 PostgreSQL 跳過密碼驗證:
- 修改
pg_hba.conf
文件,找到類似以下的行:
local all all md5
- 將
md5
修改為trust
:
local all all trust
- 重啟 PostgreSQL 服務:
sudo systemctl restart postgresql
注意:在生產環境中不建議使用
trust
,因為它會跳過密碼驗證,可能造成安全風險。
總結
- 手動建立資料庫:在 PostgreSQL 中,您需要提前建立資料庫並配置相應用戶與權限。
- 正確配置密碼:確保在 Django 的
settings.py
中配置正確的密碼,或重新設置 PostgreSQL 用戶密碼。 - 簡化密碼驗證:可以通過
.pgpass
文件或修改pg_hba.conf
設置來避免頻繁輸入密碼,但需注意安全性。
正確完成以上步驟,您就能順利地將 Django 與 PostgreSQL 整合,進行資料庫操作。如有其他疑問,請隨時尋求幫助!