You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改PostgreSQL默认用户以适配Django项目部署?

问题

尝试将Django项目部署到DigitalOcean的Ubuntu实例,已在PostgreSQL中创建new_user(带密码new_psw)和new_db,并为new_user授予new_db的全部权限,但项目始终连接默认的postgres数据库、用户和密码。

已执行的PostgreSQL操作:

  1. sudo -u postgres psql
  2. CREATE DATABASE new_db;
  3. CREATE USER new_user WITH PASSWORD 'new_psw';
  4. 配置new_user的编码、事务隔离和时区:
    ALTER ROLE new_user SET client_encoding TO 'utf8';
    ALTER ROLE new_user SET default_transaction_isolation TO 'read committed';
    ALTER ROLE new_user SET timezone TO 'UTC';
    
  5. GRANT ALL PRIVILEGES ON DATABASE new_db TO new_user;

查看项目数据库配置仍为默认值:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql',
        'NAME': 'postgres',
        'USER': 'postgres',
        'PASSWORD': 'postgres',
        'HOST': 'localhost',
        'PORT': 5432,
        'ATOMIC_REQUESTS': False,
        'AUTOCOMMIT': True,
        'CONN_MAX_AGE': 0,
        'CONN_HEALTH_CHECKS': False,
        'OPTIONS': {},
        'TIME_ZONE': None,
        'TEST': {
            'CHARSET': None,
            'COLLATION': None,
            'MIGRATE': True,
            'MIRROR': None,
            'NAME': None
        }
    }
}

额外尝试过的操作:

  • 将new_user设为new_db所有者,通过\l确认生效,但项目仍连接默认配置
  • 修改postgres用户角色禁止登录,未解决问题

解决步骤

你的PostgreSQL操作完全正确,问题核心是未更新Django项目的数据库配置文件,项目仍读取默认配置。按以下步骤修改:

  1. 定位Django项目的settings.py文件,通常路径为项目根目录/项目同名文件夹/settings.py(比如myblog/myblog/settings.py)
  2. 找到DATABASES配置块,替换为新的数据库信息:
    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.postgresql',
            'NAME': 'new_db',       # 你的新数据库名
            'USER': 'new_user',     # 你的新用户名
            'PASSWORD': 'new_psw',  # 你的新密码
            'HOST': 'localhost',
            'PORT': 5432,
        }
    }
    
  3. 保存文件后,在项目根目录(包含manage.py的目录)执行数据库迁移:
    python manage.py makemigrations
    python manage.py migrate
    
  4. 验证连接(可选):进入Django Shell测试是否能正常连接新数据库
    python manage.py shell
    
    在Shell中执行:
    from django.db import connection
    cursor = connection.cursor()  # 无报错则连接成功
    

补充说明

你之前修改postgres用户权限、切换数据库的操作都是不必要的,因为项目的数据库连接完全由Django的settings.py配置决定,和PostgreSQL当前的连接状态无关。只要配置文件正确,项目就会使用新的用户和数据库。

内容的提问来源于stack exchange,提问作者donbonbon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 10:13:26