libmysql mysql\u real\u connect在本地主机上失败,但在本地IP地址下工作
我使用的是libmysql C API,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是否按预期工作?) 或者
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
看
我也遇到了同样的问题,解决方案是卸载并禁用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”检查端口