我使用的是libmysql C API,mysql_real_connect
调用只有在我使用主机的真实IP地址时才有效 - localhost
除外。如果我使用localhost
作为主持人,我会得到
以下错误:
ERROR 2003(HY000):无法连接到'localhost'上的MySQL服务器(0)
验证应该没问题,因为使用过的用户也拥有localhost和任何主机的所有权限。
顺便说一下,它是Windows 7上的XAMPP安装。
答案 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)
检查mysql如何绑定其端口:
root @ dam2k:〜#netstat -natp | grep 3306 tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 2215 / mysqld