libmysql mysql_real_connect завершается неудачно с localhost, но работает с локальным IP-адресом - PullRequest
0 голосов
/ 05 марта 2012

Я использую libmysql C API, вызов mysql_real_connect работает, только если я использую реальный IP-адрес хоста, отличный от localhost.Если я использую localhost в качестве хоста, я получаю следующую ошибку:

ОШИБКА 2003 (HY000): Невозможно подключиться к серверу MySQL на «localhost» (0)

Аутентификация должна быть в порядке, поскольку используемый пользователь имеет все привилегии от localhost и любого хоста также.

Кстати, это установка XAMPP в Windows 7.

Ответы [ 3 ]

1 голос
/ 27 ноября 2012

У меня была та же проблема, и решение состоит в том, чтобы удалить и отключить поддержку IPv6, потому что если у меня была включена поддержка IPv6, то команда ping localhost возвращает :: 1: вместо 127.0.0.1, как я написал в файле etc \ hosts,и пример программы подключения mysql, написанной на C с использованием libmysql, не подключается, когда в качестве параметра хоста для mysql_real_connect () я указал «localhost».Теперь, после отключения IPv6, работает обе опции («localhost» или «127.0.0.1»).

PS: я пробовал это «решение» только в Windows XP SP3 Pro Czech.В Windows 7 и Linux я не пробую это.

0 голосов
/ 06 марта 2012
  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

0 голосов
/ 06 марта 2012

Либо ваш DNS сломан (ping localhost работает как положено?) или проблема, связанная со способом «localhost».

Значением хоста может быть имя хоста или IP-адрес. Если хозяин NULL или строка "localhost", соединение с локальным хостом предполагается. Для Windows клиент подключается с использованием общей памяти соединение, если на сервере включены соединения с общей памятью. В противном случае используется TCP / IP.

см. http://dev.mysql.com/doc/refman/5.0/en/mysql-real-connect.html

...