如何在Objective C Mysql客户端中设置mysql_protocol_tcp

时间:2013-03-26 18:24:43

标签: mysql ios ssh port forward

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

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

我下载了Chilkat的SSH隧道库(免费30天试用 - 和149美元 - 值得一切)。这也是第一次。经过几天没有建筑,没有连接,没有编译,没有为i386找到符号等等,我感到很高兴!... / / p>

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

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

我收到以下错误:

  

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

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

使用iOS客户端库,它不是很明显。我做了一个搜索,在mysql.h中我们有mysql_protocol_type和常量MYSQL_PROTOCOL_DEFAULT,MYSQL_PROTOCOL_TCP等等。

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

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

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

提前致谢。

1 个答案:

答案 0 :(得分:0)

我花了一些时间来弄明白这一点。对于MySQL客户端,如果指定与“localhost”的连接,它会尝试在/tmp/mysql.sock或/var/lib/mysql.sock上与UNIX套接字连接。但是,如果将localhost指定为127.0.0.1,则它将使用等效于--protocol = TCP的TCP协议进行连接。

相关问题