libmysql mysql\u real\u connect在本地主机上失败,但在本地IP地址下工作

libmysql mysql\u real\u connect在本地主机上失败,但在本地IP地址下工作,c,libmysql,C,Libmysql,我使用的是libmysql C API,mysql\u real\u connect调用仅在我使用主机的真实IP地址时有效,而不是localhost。如果我使用localhost作为主机,我会得到 以下错误: 错误2003(HY000):无法连接到“localhost”(0)上的MySQL服务器 身份验证应该是正常的,因为所使用的用户拥有本地主机和任何主机的所有权限 顺便说一下,它是在Windows 7上安装的XAMPP。或者您的DNS已损坏(ping localhost是否按预期工作?) 或者

我使用的是libmysql C API,
mysql\u real\u connect
调用仅在我使用主机的真实IP地址时有效,而不是
localhost
。如果我使用
localhost
作为主机,我会得到 以下错误:

错误2003(HY000):无法连接到“localhost”(0)上的MySQL服务器

身份验证应该是正常的,因为所使用的用户拥有本地主机和任何主机的所有权限

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

或者您的DNS已损坏(ping localhost是否按预期工作?) 或者“localhost”的特殊处理方式就是问题所在

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

  • 检查/etc/hosts文件中是否定义了这样的内容:127.0.0.1 localhost
  • 检查mysql如何绑定其端口:

    root@dam2k:~#netstat-natp | grep3306 tcp 0.0.0.0:3306 0.0.0.0:*收听2215/mysqld


  • 我也遇到了同样的问题,解决方案是卸载并禁用IPv6支持,因为如果启用了IPv6支持,则
    ping localhost
    命令返回::1:而不是我在etc\hosts文件中编写的127.0.0.1,使用libmysql编写的示例mysql connect程序在作为主机参数时不连接mysql\u real\u connect(),我提供了“localhost”。现在,禁用IPv6后,两个选项都可以使用(“本地主机”或“127.0.0.1”)


    注:我只在WindowsXPSP3Pro中尝试过这个“解决方案”。在Windows 7和Linux中,我不尝试这样做。

    您的mysql服务器可能没有监听所有的网络接口,只有“外部”接口。奇怪的是,当我将localhost更改为127.0.0.1时,它开始工作。啊,如果您使用windoze,您可以检查C:\Windows\system32\drivers\etc\hosts是否存在“127.0.1 localhost”您可以使用“netstat-na”检查端口