C / Mysql拒绝连接到远程IP

时间:2014-09-26 18:50:14

标签: mysql c

我正在用C语言编写一个访问mysql数据库的程序。除了一个简单的问题,一切都很好。在我的开发机器上,数据库是本地托管的(localhost),我没有问题。当我将程序移动到生产系统并将IP更改为生产mysql数据库的IP时,机器仍尝试访问localhost上的mysql。我很困惑,我甚至不知道从哪里开始寻找原因。

    #define server "192.168.0.1"
  mysql_init(&mysql);
              connection = mysql_real_connect(&mysql, server, user, password, database, 3306, NULL, 0);
          if (!connection) {
            printf("%s", mysql_error(&mysql));
            return 1;
          }

我也尝试过这样:

  mysql_init(&mysql);
      connection = mysql_real_connect(&mysql, "192.168.0.1", user, password, database, 3306, NULL, 0);
  if (!connection) {
    printf("%s", mysql_error(&mysql));
    return 1;
  }

无论怎样,机器都会抛出这个错误:

  

无法通过套接字连接到本地MySQL服务器   '/var/run/mysqld/mysqld.sock'

我认为这是尝试绑定到本地管道而不是远程套接字。当我回到我的开发机器并故意使用192.168.0.1地址(甚至不是开发网络中存在的地址)时,程序再次完美运行,因为它只是连接到localhost。即使我指定了IP地址。

我知道当我通过命令行$(mysql -hlocalhost)连接到mysql时,它默认使用管道而不是套接字,例如我使用$(mysql -h127.0.0.1)。我可能有那些倒退..但它似乎是这样做的。它完全忽略了IP并通过本地管道连接。到底是我做错了什么?

我希望我能正确解释。我希望这是一个明显的愚蠢的简单错误。谢谢你们。

**注意:为安全起见,地址已更改

编辑:

有趣的是,我在二进制文件上运行strings并且它没有输出我输入的DNS地址作为对最新帖子的响应。这对我来说可能是关于编译过程的一些东西。由于某种原因,它看到我输入的字符串可能为NULL并自动将其转换为二进制文件中的“localhost”。

使用编译或我的源代码似乎是一个问题。但我不明白为什么它会错误地解释我的字符串并替换它我猜想它是不可读的或'NULL'。

我做错了什么? :/

编辑:好的!我是个白痴。我从头开始重写了整个gcc命令,一切正常。显然我的手指在凌晨5点都无法工作,并且无论我写了多少代码,使用向上箭头整天重复使用损坏的命令都无法解决问题。

谢谢你们。抱歉浪费你的时间!

0 个答案:

没有答案