Debian 下配置 Django 连接 MySQL:把系统依赖一次装齐

在 Debian 上为 Django 安装 MySQL server/client、libmysqlclient-dev、python-dev 与 MySQL-python,避免驱动编译失败。

早年在 Debian 上搭 Django 项目,连 MySQL 时经常卡在「驱动装不全」:系统里装了 MySQL,Python 里 import MySQLdb 却失败,或编译扩展时缺头文件。把依赖一次装齐,后面省事很多。

下面是当年我在 Debian 上走通的一套步骤(面向当时常见的 Python 2 + MySQL-python 组合;现在新项目更建议 Python 3 + mysqlclient / PyMySQL,但思路一样:系统库 + 开发头文件 + Python 包)。

1. 安装 MySQL 与客户端开发库

sudo apt-get install mysql-server
sudo apt-get install mysql-client
sudo apt-get install libmysqlclient-dev

libmysqlclient-dev 很关键:没有它,后面 pip install MySQL-python 编译时容易报找不到头文件/库。

(原文里有一处笔误 isntall,正确拼写是 install。)

2. 安装 Python 编译与 pip 环境

sudo apt-get install python-pip python-dev build-essential

python-dev / build-essential 提供编译 C 扩展需要的工具链。

3. 安装 Python MySQL 驱动

pip install MySQL-python

装好后在 Django settings.py 里配置 DATABASES,引擎用 django.db.backends.mysql,填好 NAME / USER / PASSWORD / HOST 即可。

常见后续坑

  • 字符集:库和表建议 utf8mb4,避免表情符、冷僻字踩坑(另文有建库指定字符集的记法)。
  • 时区:USE_TZ = True 时,naive datetime 会报警(我也单独记过一条 RuntimeWarning)。
  • 权限:MySQL 用户要有对应库的权限,不要只用 root 图省事到生产。

为何记下

一人公司从原型到上线,经常自己装栈。Django 连 MySQL 的失败点往往不在 settings,而在 OS 级开发包没装。把「server + client + libmysqlclient-dev + python-dev + 驱动」当成检查清单,比对着报错一条条搜更快。换到新发行版时,把包名映射过去即可(如 default-libmysqlclient-dev)。

No comments yet