MySQL локальный доступ запрещен, до сброса

У нас очень странная проблема на нашем сервере.

Любой пользователь (включая root) не может получить доступ к mysql в локальной системе, и он переключается между сбросами.

Мы используем простой PHP-скрипт, чтобы проверить это …

$username = "test";
$password = "pass123";

$conn = new mysqli("localhost", $username, $password);
if ($conn->connect_error) {echo "[localhost] Connection failed: " . $conn->connect_error;} else echo "[localhost] Connected successfully";
echo "<hr>";

$conn = new mysqli("127.0.0.1", $username, $password);
if ($conn->connect_error) {echo "[127.0.0.1] Connection failed: " . $conn->connect_error;} else echo "[127.0.0.1] Connected successfully";
echo "<hr>";

$conn = new mysqli("192.168.1.2", $username, $password);
if ($conn->connect_error) {echo "[192.168.1.2] Connection failed: " . $conn->connect_error;} else echo "[192.168.1.2] Connected successfully";

Итак, позвольте мне провести вас через последовательность.

  1. MySQL настроен пользователем, Пользователь @% с pass123, с полными серверными привилегиями на всех БД.
  2. PHP Script запущен. Первые два теста терпят неудачу с доступом отказано. Последний преуспевает.
  3. Пользователь Mysql перенастроил: user@127.0.0.1
  4. Сценарий запуска: все три отказано.
  5. MySQL Промывать Privs
  6. Первые два успеха. Последнее не удается. (имеет смысл)
  7. MySQL настроен пользователем: Пользователь @% (оригинал шага 1)
  8. Сценарий запуска: все три успешно. (Ура? Нет)
  9. MySQL Flush Privs (и / или перезагрузка сервера)
  10. Вернуться к шагу 2.

Мы не можем заставить Coldfusion или PHP поддерживать соединения. Сначала работает первое соединение, когда user@127.0.0.1 (настроено так в mysql), но впоследствии происходит сбой в Coldfusion, и php не может надежно подключиться в зависимости от перезапуска или сброса службы.
PHP действительно обрисовывает в общих чертах проблему, как замечено выше. Но JDBC-разъем для Coldfusion, похоже, случайно работает или не работает.

Есть идеи, что здесь происходит? user @% должен всегда работать, не так ли?


  • MySQL v5.5, PHP v 7, Coldfusion v11 (последняя версия jdbc .38). Windows Server 2012.
  • my.cnf НЕ настроен с адресом привязки (разрешены все хосты).
    • макс-соединения = 500
  • ipv6 отключен (OxFFFFFF)
  • брандмауэр выключен.
  • Та же база данных, те же пользователи и та же конфигурация отлично работает на Windows Server 2008, с которого мы пытаемся перейти. Это все свежие установки каждого программного обеспечения. Мы смогли просто создать пользователя @% и подключиться ко всем 3 тестам в любое время.

Дополнительные примечания:

  • «localhost» при наборе в браузере (локальный IIS) иногда работает, иногда нет. 127.0.0.1 работает нормально всегда.
  • запись хостов отсутствует, так как win7 + использует внутренний DNS. Мы добавили запись localhost, она не дала эффекта.
  • IIS продолжает замерзать на нас. Сайты начинают «крутиться» в браузере и никогда не загружаются. Мы должны запустить iisreset. Мы не можем определить, почему это происходит — это кажется случайным. Кажется, связано с проблемой localhost, да?

2

Решение

Нашел ответ, извините, ребята, следовало бы еще немного изучить.
https://serverfault.com/questions/122472/allowing-wildcard-access-on-mysql-db-getting-error-access-denied-for-use

Иногда мы находим правильные ключевые слова, говоря об этом, эффект резиновой утки.

По сути, по-видимому, mysql по умолчанию включает пустую запись пользователя с хостом localhost, который заменяет любого пользователя @%. В результате этого поведения.
Удалите пользователя, и проблема решена. теперь мой брандмауэр можно снова включить … вау.

Проблемы IIS, которые я упомянул, являются темой для другого дня, я полагаю …

1

Другие решения

Если я правильно помню, в какой-то момент я обнаружил, что мне нужно 2 пользователя. Проверьте на наличие второго user@localhost Пользователь, прежде чем продолжить.

Это произошло потому, что% не соответствовал локальным соединениям через сокет UNIX, а вместо этого user@localhost запись будет использоваться

Этот вопрос может быть полезен: Mysql, включающий удаленный и локальный доступ

Помните, что любые изменения в таблице пользователей требуют FLUSH PRIVILEGES до вступления изменений в силу.

1