如何使用Propel对SSH隧道进行逆向工程?

时间:2014-09-04 15:08:45

标签: php mysql propel

我只能通过SSH隧道连接到我的数据库。到目前为止,我一直在从我的数据库中转储模式并将其加载到我的本地。如何直接连接到我的数据库?

1 个答案:

答案 0 :(得分:2)

这些信息在互联网上完全缺乏,所以我回答了我自己的问题。

  1. 关闭本地MySQL服务器实例(如果有的话)。
  2. 打开终端并运行以下命令:

    ssh -L 3307:[database hostname]:3306 [SSH username]@[SSH hostname] [-p[SSH port]]
    

    这也适用于PuTTY,我不确定。

  3. 在build.properties中,设置以下内容:

    propel.database.url=mysql:host=0.0.0.0;port=3307;dbname=[database name]
    
  4. 不能是localhost。如果是,您将收到以下错误:

    propel > reverse:
    
         [echo] +-----------------------------------------------+
         [echo] |                                               |
         [echo] | Generating XML from PDO connection !          |
         [echo] |                                               |
         [echo] +-----------------------------------------------+
    [propel-schema-reverse] There was an error building XML from metadata: vendor/propel/propel1/generator/build-propel.xml:296:1: SQLSTATE[HY000] [2002] No such file or directory
    
    BUILD FINISHED
    
    Total time: 0.2293 seconds
    

    这个神秘的错误意味着它无法在您的计算机上找到Unix套接字,因为even if you are specifying the host and the port,PDO仍会查找localhost的套接字。显然,您永远不能为不在您的计算机上的服务器打开套接字,即使您将unix_socket添加到DSN为null,它也会抱怨文件名错误。使用0.0.0.0修复了此错误。我实际上是从this question找出来的。

    你已经完成了!您现在可以通过SSH隧道对Propel进行逆向工程。