【问题标题】:How to set mysql_protocol_tcp in Objective C Mysql client如何在 Objective C Mysql 客户端中设置 mysql_protocol_tcp
【发布时间】:2013-03-16 16:41:42
【问题描述】:

我下载了 Karl Kraft 的 MySQL 源代码和库,并为 iOS 6 构建了一个 mysql 客户端库。它第一次在本地 mysql 数据库上运行良好。甚至可以很好地处理 blob 数据。

下一步是移植到远程数据库。在下载了各种库并扯掉了我的头发后,我去寻找一个打包的解决方案。

我下载了 Chilkat 的 SSH Tunnel 库(30 天免费试用 - 149 美元 - 物有所值)。这也是第一次。在没有构建、没有链接、没有编译、没有为 i386 blah blah blah 找到符号的日子和发呆之后,这是一种乐趣!

好的,所以这是踢球者。我现在想使用远程数据库。当我在防火墙后面的数据库机器上通过 ssh 端口 22 将 3306 ssh 端口转发到 3306 时。现在我关掉mysqld,我的主机是localhost 3306端口。我的mysql有点小问题。

客户端在 UNIX/MAC 机器上的默认启动是在 localhost 上寻找套接字连接。

我收到以下错误:

错误:无法通过套接字'/tmp/mysql.sock' (38) 连接到本地 MySQL 服务器

我需要一个用于 mysql 的 TCP 协议启动选项。用命令行,很简单--protocol=TCP。

对于 iOS 客户端库,这并不明显。我进行了搜索,在 mysql.h 中我们有 mysql_protocol_type 和常量 MYSQL_PROTOCOL_DEFAULT、MYSQL_PROTOCOL_TCP 等。

我缺少的知识是如何在 Objective C 中以编程方式设置选项。

有一个服务器对象只定义了参数(服务器、名称、端口、用户名、密码),下一个对象是一个调用 mysql_init() 的连接对象。有没有人知道如何做到这一点?

顺便说一句:Karl Kraft 和 ChilKat 的那个人应该为后代保留他们的血液。他们为我节省了很多时间。

提前致谢。

【问题讨论】:

    标签: mysql ios ssh port forward


    【解决方案1】:

    我花了一段时间才弄明白。对于 MySQL 客户端,如果您指定连接到 'localhost',它会尝试连接位于 /tmp/mysql.sock 或 /var/lib/mysql.sock 的 UNIX 套接字。但是,如果您将 localhost 指定为 127.0.0.1,那么它会使用等效于 --protocol=TCP 的 TCP 协议进行连接。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-12-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-17
      • 1970-01-01
      • 2020-07-14
      • 1970-01-01
      相关资源
      最近更新 更多