| 程序 | 版本 |
|---|---|
| linux | Rocky Linux release 9.6 (Blue Onyx) |
| dokcer | 28.5.1 |
| superset | 5.0.0 |
问题:按照官方给的方式去安装mysql的驱动程序后,在ui界面中不显示出对应数据库的连接
pip list | grep mysqlclient
会输出
mysqlclient 2.2.7
说明mysqlclient是安装的
但通过
python -c "import MySQLdb; print('安装成功,print('MySQLdb 模块导入成功')"
会输出
ModuleNotFoundError: No module named 'MySQLdb'
说明 mysqlclient 驱动未被正确安装或未被 Python 识别,即使之前执行过 pip install mysqlclient 也可能因环境问题导致失效
步骤 1:确认 mysqlclient 是否真的安装
进入容器,执行以下命令检查安装状态:
# 进入 Superset 容器(root 用户)
docker exec -it --user root 容器ID/名称 bash
# 检查 mysqlclient 是否在已安装列表中
pip list | grep mysqlclient
# 或使用 uv(Dockerfile 中用 uv 管理依赖)
uv list | grep mysqlclient
- 若未显示结果:说明未安装成功,需重新安装。
- 若显示结果:说明安装了但未被 Python 识别(可能是路径问题或版本冲突)。
从Superset的Dockerfile 可知,Superset 使用 uv 创建了虚拟环境 /app/.venv,所有 Python 包(包括 mysqlclient)都安装在该虚拟环境中。若未激活虚拟环境,系统 Python 解释器无法找到包。
步骤 2:激活 Dockerfile 中的虚拟环境
# 进入容器(root 用户)
docker exec -it --user root 容器ID/名称 bash
# 激活虚拟环境(Dockerfile 中创建的虚拟环境路径)
source /app/.venv/bin/activate
# 激活后再次测试导入
python -c "import MySQLdb; print('安装成功,print('MySQLdb 模块导入成功')"
- 激活虚拟环境后,命令行前缀会显示
(.venv),表示当前已进入虚拟环境。 - 若此时能正常输出版本号,说明问题根源是未激活虚拟环境。
步骤 3: 强制重新安装 mysqlclient
# 先卸载残留版本(若有)
pip uninstall -y mysqlclient
# 用 uv 重新安装(Dockerfile 中推荐的包管理工具,确保与环境兼容)
uv pip install mysqlclient==2.2.7 # 指定版本,避免兼容性问题
步骤 4: 验证安装是否被 Python 识别
python -c "import MySQLdb; print('安装成功,print('MySQLdb 模块导入成功')"
MySQLdb 是 mysqlclient 库提供的 Python 模块,如果命令执行成功,说明mysqlclient 已被正确安装到当前 Python 环境中
步骤 5: 重启 Superset 容器
# 退出容器
exit
# 重启容器使驱动生效
docker restart 容器ID/名称
重启完成后,可以在UI页面中看到对应的MYSQL连接选项