通过SSH隧道的本地转发实现Django连接远程数据库

SSH连接命令

默认连接的端口为22

1. 使用私钥

ssh -p connect_port user_name@host -i your_private_identity

2. 使用用户密码

ssh user_name@host

创建SSH隧道

ssh -L 7878:localhost:3306 -p ssh_port user_name@remote_host -i your_private_identity

本机端口:目标host:目标端口

这里的目标host是localhost的原因是:已经使用ssh连接到目标主机,localhost指的是目标主机的localhost,将localhost替换成目标主机ip亦可

通过SSH隧道的本地转发实现Django连接远程数据库

  1. 创建一个ssh隧道,将远程数据库映射到本地端口

    ssh -L local_port:localhost:<remote mysql port> <username>@<remote host>
    

    ssh连接进行时,可以通过访问本地端口来访问远程数据库

  2. 在Django的settings中配置数据库

    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.mysql',
            'NAME': db_name,
            'USER': remote_mysql_user, # 远程数据库账号密码
            'PASSWORD': remote_mysql_password,
            'HOST': "localhost",
            'PORT': local_port, # 远程数据库映射到本地的端口
            'OPTIONS': {'init_command': 'SET default_storage_engine=INNODB;'}
            }
    }
    

至此,在使用Django的model时,将通过ssh隧道访问远程数据库

原文地址:https://www.cnblogs.com/luozx207/p/11765031.html