Я решил эту проблему, но она может помочь другим:
У меня есть сервер mysql, работающий на AWS, я установил VPN-подключение из офисной сети к нашему AWS VPC.
Офисная подсеть 192.168.10.x
У меня есть пользователь mysql с правильными разрешениями:
mysql> select user,host from user;
+------------------+--------------+
| user | host |
+------------------+--------------+
| root | 192.168.10.% |
Проблема:
Один из моих серверов получил эту ошибку при попытке подключения из PHP:
MYSQL connection Failed byAccess denied for user 'root'@'ip-192-168-10-88.eu-west-1.compute.internal' (using password: YES)
Забавно было то, что вход в систему работал из командной строки на этом сервере и из PHP на других серверах.
Я вижу, откуда возникла ошибка: сервер AWS «разрешил» ip клиента 192.168.10.88 до ip-192-168-10- 88.eu-запад 1.compute.internal
Поскольку эта строка не соответствует шаблону для поля хоста в пользовательской таблице mysql, вход в систему не удался.
Обходной путь: Я получил его, поместив эту строку в / etc / hosts
192.168.10.88 192.168.10.88
Я посмотрел файл / etc / resolv.conf , и я подозреваю, что виновником являются настройки AWS DNS:
nameserver 172.29.0.2
search eu-west-1.compute.internal
Таким образом, я мог бы также решить эту проблему, просто используя 8.8.8.8 для DNS
Надеюсь, это кому-нибудь поможет.