通过ssh隧道连接到数据库
tunneler的Python项目详细描述
一种命令工具和库,以最小的麻烦连接到数据库。
要安装:
$ pip install tunneler
您可能还需要首选数据库的数据库驱动程序。要在安装tunneler时自动安装Postgres,请执行以下操作:
$ pip install tunneler[pg]
运行:
$ tunneler name_of_task name_of_connection
如上面的命令所示,在运行tunneler时需要理解两个概念,connections和tasks。
在当前目录中的connections.yaml文件中定义连接,如下所示:
prod:remote_host:publicjumpboxservernamessh_username:usernamessh_pkey:|-----BEGIN RSA PRIVATE KEY-----..............................................................................-----END RSA PRIVATE KEY-----private_dburl:postgres://username:password@privatedbservername/databasenamelocal_port:5433dev:.....
您还可以在配置中指定ssh_config变量。tunneler然后将使用来自主机ssh配置的值。例如:
prod:ssh_config:prod-jumpboxprivate_dburl:postgres://username:password@privatedbservername/databasenamelocal_port:5433dev:.....
这将使用在现有SSH配置文件中指定的远程主机/用户名/私钥,因此不需要在配置文件
中重复它们。Tunneler将使用此信息设置本地Tunneled Post,您可以在其中直接访问此数据库。
然后将向每个task提供到此本地端口的连接url。
有三个内置任务:
- test_connection (run this one to check your config is correct)
- do_full_pg_dump (assumes you have pg_dump installed)
- do_schema_pg_dump (also assumes you have pg_dump installed)
例如,为了转储生产模式,我们运行以下命令:
$ tunneler do_schema_pg_dump prod
自定义任务
想定义自己的任务吗?只需在当前目录中创建tasks.py文件(或模块)。
在此文件中定义接受连接URL的顶级方法,该方法名称将作为任务提供。
例如,测试连接任务可以重新实现如下:
fromsqlbagimportSdeftest_connection_custom(dburl):withS(dburl)ass:s.execute('select 1')
然后按如下方式运行:
$ tunneler test_connection_custom prod
很简单。