libmysql mysql_real_connect使用localhost失败,但使用本地IP地址

时间:2012-03-05 13:47:37

标签: c libmysql

我使用的是libmysql C API,mysql_real_connect调用只有在我使用主机的真实IP地址时才有效 - localhost除外。如果我使用localhost作为主持人,我会得到 以下错误:

  

ERROR 2003(HY000):无法连接到'localhost'上的MySQL服务器(0)

验证应该没问题,因为使用过的用户也拥有localhost和任何主机的所有权限。

顺便说一下,它是Windows 7上的XAMPP安装。

3 个答案:

答案 0 :(得分:1)

我遇到了同样的问题,解决方案是卸载和禁用IPv6支持,因为如果我启用了IPv6支持,那么ping localhost命令将返回:: 1:而不是127.0.0.1,因为我已在etc \ hosts中写入文件和示例mysql使用libmysql用C编写的连接程序当作为mysql_real_connect()的主机参数时我不提供连接“localhost”。现在,禁用IPv6后,两个选项都工作(“localhost”或“127.0.0.1”)。

P.S。:我只在Windows XP SP3 Pro Czech中试过这个“解决方案”。在Windows 7和Linux中,我不尝试这个。

答案 1 :(得分:0)

您的DNS是否已损坏(ping localhost是否按预期工作?) 或者“localhost”被特别对待的方式是问题。

  

host的值可以是主机名或IP地址。如果是主持人   是NULL或字符串“localhost”,与本地主机的连接是   假定。对于Windows,客户端使用共享内存进行连接   连接,如果服务器启用了共享内存连接。   否则,使用TCP / IP。

请参阅http://dev.mysql.com/doc/refman/5.0/en/mysql-real-connect.html

答案 2 :(得分:0)

  1. 检查/ etc / hosts文件中是否定义了类似的内容:127.0.0.1 localhost
  2. 检查mysql如何绑定其端口:

    root @ dam2k:〜#netstat -natp | grep 3306 tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 2215 / mysqld