阿里云ECS Ubuntu 22.04使用宝塔部署Django项目时数据库怎么配置?

在阿里云 ECS(Ubuntu 22.04)上通过宝塔面板部署 Django 项目时,数据库配置通常分为安装数据库创建数据库/用户以及Django 代码连接三个步骤。以下是详细操作指南:

第一步:在宝塔面板中安装并初始化数据库

  1. 登录宝塔面板:进入 http://你的服务器IP:8888
  2. 安装 MySQL/MariaDB
    • 点击左侧菜单的 “软件商店”
    • 搜索 MySQLMariaDB(推荐选择 MySQL 8.0MariaDB 10.6+,与 Django 兼容性更好)。
    • 点击“安装”,等待安装完成。
  3. 设置 root 密码
    • 安装完成后,建议修改 root 用户的默认密码(如果未自动提示设置),或者在后续创建项目专用用户时使用随机生成的密码。
    • 注意:为了安全,Django 生产环境不建议直接使用 root 用户连接,应创建专用账号。

第二步:创建数据库和用户

在宝塔面板中为 Django 项目创建一个专用的数据库和权限受限的用户。

  1. 点击左侧菜单的 “数据库”
  2. 点击 “添加数据库”
    • 名称:填写项目名称(如 my_django_db)。
    • 编码:选择 utf8mb4_general_ci(Django 默认推荐)。
    • 备注:可选填。
    • 点击“提交”。
  3. 创建用户(重要)
    • 在刚创建的数据库列表中,点击右侧的 “管理”“用户管理”(不同版本界面略有差异,通常在数据库详情页)。
    • 点击 “添加用户”
      • 用户名:自定义(如 django_user)。
      • 密码:生成一个强密码(务必记好,稍后填入 Django 配置)。
      • 权限:选择 “所有权限”(或者仅勾选该数据库的权限,宝塔通常会自动关联)。
      • 主机:选择 “本地 (localhost)"“任意 (%)”
        • 建议:如果 Django 和数据库在同一台机器,选 localhost 更安全;如果未来可能跨机部署,选 %
    • 点击“提交”。

第三步:配置 Django 项目 (settings.py)

将刚才创建的数据库信息填入 Django 项目的 settings.py 文件中。

确保已安装 Python 的 MySQL 驱动(宝塔通常自带 mysqlclientpymysql,若未安装需执行 pip install pymysql 并在 __init__.py 中添加导入语句,但宝塔环境通常已预装 mysqlclient)。

打开 settings.py,找到 DATABASES 配置部分,修改如下:

import os

# 获取环境变量中的密码(推荐做法,避免硬编码)
# 或者直接在下方填入刚才设置的密码

DATABASES = {
    'default': {
        # Django 2.2+ 推荐使用 mysql 引擎,旧版本用 mysql_native_password 可能需要额外配置
        'ENGINE': 'django.db.backends.mysql', 
        'NAME': 'my_django_db',          # 第二步创建的数据库名称
        'USER': 'django_user',           # 第二步创建的用户名
        'PASSWORD': 'your_strong_password', # 第二步创建的用户密码
        'HOST': '127.0.0.1',             # 宝塔默认本地访问地址
        'PORT': '3306',                  # 默认端口
        'OPTIONS': {
            'init_command': "SET sql_mode='STRICT_TRANS_TABLES'",
            'charset': 'utf8mb4',
        },
    }
}

⚠️ 关键注意事项(Ubuntu 22.04 + MySQL 8.0)

Ubuntu 22.04 默认安装的 MySQL 8.0 使用 caching_sha2_password 认证插件,而旧版本的 mysqlclient 库可能不支持。如果遇到 Authentication plugin 'caching_sha2_password' cannot be loaded 错误,有以下两种解决方案:

方案 A(推荐):修改 MySQL 用户认证方式
在宝塔数据库管理中,找到该用户,点击“编辑”或“权限”,将认证插件改为 mysql_native_password
或者在宝塔终端执行 SQL:

ALTER USER 'django_user'@'localhost' IDENTIFIED WITH mysql_native_password BY 'your_strong_password';
FLUSH PRIVILEGES;

方案 B:升级 Python 依赖
确保安装了最新版 mysqlclient 以支持新认证方式:

pip install --upgrade mysqlclient

第四步:迁移数据并启动服务

  1. 同步数据库结构
    在宝塔的终端(SSH)中,进入项目目录,执行:

    python manage.py makemigrations
    python manage.py migrate

    如果没有报错,说明数据库连接成功且表结构已创建。

  2. 创建超级管理员

    python manage.py createsuperuser
  3. 启动项目

    • 方式一(宝塔面板):在宝塔的“网站” -> “Python 项目”中,绑定域名,选择对应的虚拟环境和入口文件(通常是 wsgi.py),点击“启动”。
    • 方式二(Gunicorn/Nginx):推荐在生产环境使用 Gunicorn + Nginx。宝塔的"Python 项目”功能通常会自动配置好 Nginx 反向X_X到 Gunicorn。

常见问题排查

  • 连接被拒绝 (Connection Refused):检查防火墙是否放行了 3306 端口(虽然本地连接通常不需要,但如果 HOST 填的是公网 IP 则需要)。
  • 权限不足 (Access denied):检查 settings.py 中的用户名和密码是否与宝塔中创建的一致,以及 HOST 是否匹配(是 localhost 还是 127.0.0.1)。
  • 中文乱码:确保数据库字符集是 utf8mb4,且 Django 的 DEFAULT_CHARSET 也是 utf-8

按照以上步骤,你的 Django 项目即可在阿里云 Ubuntu 22.04 + 宝塔环境中正常连接并使用数据库。

未经允许不得转载:云知识CLOUD » 阿里云ECS Ubuntu 22.04使用宝塔部署Django项目时数据库怎么配置?