Я пытаюсь подключиться к MySQL с помощью команды
mysql -h 127.0.0.1
Выдает ошибку
ERROR 1045 (28000): Access denied for user 'root'@'mydomain.com' (using password: NO)
Почему 127.0.0.1 преобразуется в мое доменное имя и как это исправить?
Однако это работает, если я не указываю хост (и, соответственно, если указан «localhost»).
Редактировать: Кажется, при использовании TCP он разрешается в доменное имя, поэтому при использовании также происходит сбой
mysql -h localhost --protocol=TCP
Редактировать2: Когда я использую skip-name-resolve, я получаю похожий вывод, за исключением того, mydomain.com
что он заменяется на x.x.x.x
, который является публичным IP-адресом mydomain.com
.
решение1
У меня был маскарадинг для всех внешних пакетов (включая lo). Удаление/редактирование iptable -t nat POSTROUTING
правил исправило проблему.
решение2
Скорее всего, это вызвано записью в файле hosts.
решение3
Может быть, mysql прослушивает только ваш публичный IP, а не 0.0.0.0?
решение4
1) Проверьте /etc/hosts и убедитесь, что 127.0.0.1 указывает только на localhost, а не на mydomain.com. mydomain.com должен быть связан с фактическим IP-адресом сервера, а не с localhost.localdomain.
2) Также похоже, что вы установили пароль для root на вашем экземпляре mysql (на самом деле это хорошо). Рекомендую добавить ключ "-p" к вашему логину, чтобы он выглядел так:
mysql -h локальный хост -p
Затем вам будет предложено ввести пароль для root. Надеюсь, это поможет.