SAS中的数据库连接使用ssh隧道

时间:2012-02-02 16:46:22

标签: sql ssh odbc sas

我想知道是否有办法使用.ppk文件使用SHH隧道连接到SAS中的MySQL数据库。

我可以通过提供.ppk文件使用SQLyog连接到这个MySQL数据库。

2 个答案:

答案 0 :(得分:1)

我认为这不是一个SAS问题,而是更多的ODBC问题。答案是肯定的,你应该可以但你需要在ODBC连接设置中指定它。

我假设您正在运行Windows,因为您使用的是SQLYog。

转到“控制面板” - >“管理工具” - >“数据源ODBC”。

如果您已在此处设置ODBC连接,请找到并编辑属性。在其中一个配置选项卡上,可以选择输入“SSL密钥”文件。

如果您尚未在此处设置ODBC连接,请使用已安装的MySQL ODBC驱动程序创建一个新连接。请务必按照上述说明设置SSL密钥文件。在SAS中,您可以通过执行以下操作连接到数据库:

proc sql noprint;
  connect to odbc (datasrc=mysql_dsn user=me password=mypwd);
  create table tmp as 
  select * 
  from connection to odbc 
  (  
  select * from olp.application limit 1   /* THIS IS YOUR MYSQL QUERY */
  )  
  ;
quit;

答案 1 :(得分:1)

我通过plink(来自PuTTy软件包)实现了这一目标。在我的示例中,我连接到远程服务器,但它也适用于不进行所有转发的localhost。

首先,像往常一样设置ODBC(32或64位)数据源-说您将其命名为DB_SOURCE,并带有适当的驱动程序,列出127.0.0.1或localhost作为服务器,以及本地端口号(LOCAL_PORT )。其次,使用x命令(调整选项后):

options noxwait NOXSYNC;
data _null_; /* set up tunnel to remote db */
    x '"C:\Program Files\PuTTY\plink.exe" REMOTE_IP -P 22 -T -l USER_NAME -i c:\users\LOCAL_USER_NAME\.ssh\PRIVATE_KEY_FILE_NAME.ppk -L 127.0.0.1:LOCAL_PORT:REMOTE_IP:REMOTE_PORT';
run;

然后,做您的正常工作。例如:

libname LIBNAME ODBC datasrc=DB_SOURCE qualifier=DB_TO_USE; 

密钥文件似乎是最佳实践,因为在纯文本SAS程序中留下密码不胜枚举。