在阿里云 ECS(Ubuntu 22.04)上通过宝塔面板部署 Django 项目时,数据库配置通常分为安装数据库、创建数据库/用户以及Django 代码连接三个步骤。以下是详细操作指南:
第一步:在宝塔面板中安装并初始化数据库
- 登录宝塔面板:进入
http://你的服务器IP:8888。 - 安装 MySQL/MariaDB:
- 点击左侧菜单的 “软件商店”。
- 搜索
MySQL或MariaDB(推荐选择 MySQL 8.0 或 MariaDB 10.6+,与 Django 兼容性更好)。 - 点击“安装”,等待安装完成。
- 设置 root 密码:
- 安装完成后,建议修改 root 用户的默认密码(如果未自动提示设置),或者在后续创建项目专用用户时使用随机生成的密码。
- 注意:为了安全,Django 生产环境不建议直接使用 root 用户连接,应创建专用账号。
第二步:创建数据库和用户
在宝塔面板中为 Django 项目创建一个专用的数据库和权限受限的用户。
- 点击左侧菜单的 “数据库”。
- 点击 “添加数据库”:
- 名称:填写项目名称(如
my_django_db)。 - 编码:选择
utf8mb4_general_ci(Django 默认推荐)。 - 备注:可选填。
- 点击“提交”。
- 名称:填写项目名称(如
- 创建用户(重要):
- 在刚创建的数据库列表中,点击右侧的 “管理” 或 “用户管理”(不同版本界面略有差异,通常在数据库详情页)。
- 点击 “添加用户”:
- 用户名:自定义(如
django_user)。 - 密码:生成一个强密码(务必记好,稍后填入 Django 配置)。
- 权限:选择 “所有权限”(或者仅勾选该数据库的权限,宝塔通常会自动关联)。
- 主机:选择 “本地 (localhost)" 或 “任意 (%)”。
- 建议:如果 Django 和数据库在同一台机器,选
localhost更安全;如果未来可能跨机部署,选%。
- 建议:如果 Django 和数据库在同一台机器,选
- 用户名:自定义(如
- 点击“提交”。
第三步:配置 Django 项目 (settings.py)
将刚才创建的数据库信息填入 Django 项目的 settings.py 文件中。
确保已安装 Python 的 MySQL 驱动(宝塔通常自带 mysqlclient 或 pymysql,若未安装需执行 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
第四步:迁移数据并启动服务
-
同步数据库结构:
在宝塔的终端(SSH)中,进入项目目录,执行:python manage.py makemigrations python manage.py migrate如果没有报错,说明数据库连接成功且表结构已创建。
-
创建超级管理员:
python manage.py createsuperuser -
启动项目:
- 方式一(宝塔面板):在宝塔的“网站” -> “Python 项目”中,绑定域名,选择对应的虚拟环境和入口文件(通常是
wsgi.py),点击“启动”。 - 方式二(Gunicorn/Nginx):推荐在生产环境使用 Gunicorn + Nginx。宝塔的"Python 项目”功能通常会自动配置好 Nginx 反向X_X到 Gunicorn。
- 方式一(宝塔面板):在宝塔的“网站” -> “Python 项目”中,绑定域名,选择对应的虚拟环境和入口文件(通常是
常见问题排查
- 连接被拒绝 (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