Mysql CLI нормально подключается к localhost, но mysqli_connect разрешает localhost по имени машины - PullRequest
0 голосов
/ 22 марта 2019

У меня, казалось бы, прямой вызов с использованием mysqli_connect (), который завершается неудачно из-за замены хоста именем localhost.

Пример:

$username = 'foo';
$host = 'localhost';
$passwd = 'secret';

$link = mysqli_connect($host,$username, $passwd)...

Вызов mysqli_connect с помощью localhost или 127.0.0.1, когда хост возвращает что-то вроде этого: (HY000 / 1045): доступ запрещен для пользователя 'foo'@'servername.mydomain.com'

Я могу подключиться, используя ту же учетную запись с локально установленным клиентом mysql, но разрешения пользователя действительны:

SHOW GRANTS FOR 'foo'@'localhost';
GRANT USAGE ON *.* TO 'foo'@'localhost'

Очевидно, что mysqli_connect пытается подключиться, используя DNS-имя локального компьютера вместо localhost.

Я знаю, что мог бы разрешить выдачу гранта для пользователя с хостом, явно заданным как имя машины, или разрешить со всех хостов, но ни один из этих вариантов не приемлем в этом случае. Мне нужно, чтобы он работал, используя localhost.

Связанный: / etc / hosts определяет localhost следующим образом: 127.0.0.1 localhost

Любая помощь приветствуется. Спасибо.

1 Ответ

0 голосов
/ 23 марта 2019

Передача пути к сокету в качестве последнего аргумента mysqli_connect (), вероятно, работала все время. Последующий вызов удаленной базы данных также не удался с идентичной ошибкой, и я до сих пор не заметил, что ошибка произошла на более позднем номере строки.

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