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

如何通过SSH将Django应用连接到Namecheap上托管的MySQL数据库

通过SSH连接Namecheap托管MySQL到Django的操作步骤

前提准备

先确认你已经拥有以下信息:

  • SSH连接信息:服务器地址、SSH端口、SSH用户名、认证凭据(密码或SSH私钥文件)
  • MySQL连接信息:数据库名称、数据库用户名、数据库密码、MySQL绑定地址(Namecheap默认是127.0.0.1)、MySQL端口(默认3306)

方法一:手动建立SSH端口转发(适合本地开发场景)

这种方式操作最简单,不需要修改额外代码,只需要提前在本地启动SSH隧道即可:

  1. 终端执行端口转发命令,将远程MySQL端口映射到本地:
    ssh -L <本地自定义端口>:<MySQL绑定地址>:<MySQL端口> <SSH用户名>@<SSH服务器地址> -p <SSH端口>
    
    参考示例(适配Namecheap共享主机默认配置):
    ssh -L 3307:127.0.0.1:3306 your_ssh_user@192.168.1.100 -p 21098
    
    注:Namecheap共享主机默认SSH端口为21098,可替换为你自己的实际端口
  2. 保持终端窗口不关闭,隧道就会持续生效。此时修改Django项目settings.py中的数据库配置:
    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.mysql',
            'NAME': '你的数据库名称',
            'USER': '你的数据库用户名',
            'PASSWORD': '你的数据库密码',
            'HOST': '127.0.0.1',
            'PORT': '3307', # 对应你刚才设置的本地自定义端口
        }
    }
    
  3. 执行python manage.py makemigrations测试连接是否正常即可。

方法二:代码内嵌SSH隧道(适合不需要手动维护隧道的场景)

如果不想每次都手动开终端维持隧道,可以用sshtunnel库在Django启动时自动创建隧道:

  1. 安装依赖包:
    pip install sshtunnel mysqlclient
    
  2. 修改settings.py文件,在数据库配置前添加隧道初始化逻辑:
    import sshtunnel
    
    # 初始化SSH隧道
    tunnel = sshtunnel.SSHTunnelForwarder(
        ('你的SSH服务器地址', 21098), # 替换为实际SSH地址和端口
        ssh_username='你的SSH用户名',
        ssh_password='你的SSH密码', # 如果用私钥认证则替换为 ssh_pkey='~/.ssh/私钥文件路径'
        remote_bind_address=('127.0.0.1', 3306)
    )
    tunnel.start()
    
    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.mysql',
            'NAME': '你的数据库名称',
            'USER': '你的数据库用户名',
            'PASSWORD': '你的数据库密码',
            'HOST': '127.0.0.1',
            'PORT': tunnel.local_bind_port, # 自动读取隧道绑定的本地端口
        }
    }
    
    注:生产环境建议将SSH密码、数据库密码等敏感信息存入环境变量,不要硬编码在代码中

常见问题排查

  • 连接失败优先验证隧道是否正常:执行mysql -h 127.0.0.1 -P <本地映射端口> -u <数据库用户名> -p测试是否能正常登录MySQL,排除SSH配置问题
  • Namecheap的MySQL默认仅允许本地访问,远程绑定地址必须填写127.0.0.1,不能填公网IP
  • 使用SSH私钥认证时,确保私钥文件权限为600,否则SSH会拒绝连接
  • 生产环境部署建议用系统服务(如systemd)常驻SSH隧道,比代码内嵌隧道稳定性更高

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 09:09:07