PHP: mysql_connect (): [2002] Es konnte keine Verbindung hergestellt werden, da der Zielcomput (пытается подключиться через tcp: // localhost: 3306) - PullRequest
2 голосов
/ 06 апреля 2011

Я пытаюсь подключиться к серверу mysql на локальном хосте через скрипт php:

$mysql = mysql_connect('localhost', 'root', 'mysecret');

но я всегда получаю сообщение:

mysql_connect (): [2002] Es konnte keine Verbindung hergestellt werden, da der Zielcomput (пытается подключиться через tcp: // localhost: 3306)

Я думаю, что перевод этого немецкого сообщения:

mysql_connect (): 2002 Нет такого файла или каталога (пытается подключиться через tcp: // localhost: 3306)

Я могу использовать phpMyAdmin с этими учетными данными - поэтому они верны и сервер mysql работает в целом. При запуске клиента MySql из консоли у меня нет проблем:

mysql -u root -p

Введите пароль:

Добро пожаловать на монитор MySQL. Команды заканчиваются на; или \ g.

Ваш идентификатор соединения MySQL 86

Версия сервера: 5.0.51a-24 + lenny5 (Debian)

Введите 'help;' или '\ h' за помощь. Введите '\ c', чтобы очистить буфер.

mysql> quit

Bye

Подключение к localhost через порт по умолчанию (3306) через telnet работает, но я теряю соединение каждый раз:

telnet localhost 3306 Попытка

127.0.0.1 ...

Подключено к локальному хосту.

Экранирующий символ - «^]».

5.0.51a-24 + lenny5`w'V \ MJmg, <42; rMkQ3IW [Соединение закрыто сторонним хостом. </p>

Как объясняет мне руководство, я думаю, что это запасной вариант для сокета, если используется localhost. Я не могу найти mysql.sock в моем debian lenny - поэтому я не могу указать mysql.default_socket на этот путь.

Может быть, я не на правильном пути - было бы неплохо, если бы вы могли определить мне решение.

Ответы [ 5 ]

2 голосов
/ 06 апреля 2011

Попробуйте $mysql = mysql_connect('127.0.0.1', 'root', 'mysecret'); подключиться через TCP / IP.

1 голос
/ 06 апреля 2011

Вы сможете найти mysql.sock с помощью:

$ locate mysql.sock

и соответственно отредактируйте php.ini:

mysql.default_socket = /path/to/mysql.sock

Перезапустите Apache ...

$ apachectl graceful

... и убедитесь, что сокет установлен правильно:

// info.php

phpinfo();
0 голосов
/ 24 февраля 2012

Дэ правильно. В терминале, работающем под UX OS, введите:

netstat -ln | grep mysql

Это даст вам адрес вашего sock-файла. Сравните это с адресом в php.ini. Если это что-то еще, исправьте это по адресу, который netstat дал вам, следуя совету Дэ.

Да, средство защиты устанавливает адрес 127.0.0.1, но это не решает вашу проблему.

0 голосов
/ 06 апреля 2011

В этой ссылке есть проблема, похожая на вашу:

http://forums.mysql.com/read.php?52,294772,294772#msg-294772

Посмотрите в предложениях решения.

0 голосов
/ 06 апреля 2011

Местоположение сокета должно быть указано в файле mysql .ini. В системах Debian он должен быть в /etc/mysql/mysql.cnf. Ищите строку, начинающуюся с 'socket', рядом с началом файла. Скорее всего, он установлен на /var/run/mysqld/mysql.sock

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...