Неудачная попытка подключения TCP / IP, успешная попытка - использовать локальный файл сокета unix.
Ссылка: https://dev.mysql.com/doc/refman/5.7/en/connecting.html
В UnixПрограммы MySQL обрабатывают имя хоста localhost
специально, что, вероятно, отличается от того, что вы ожидаете по сравнению с другими сетевыми программами.Для соединений с localhost
программы MySQL пытаются подключиться к локальному серверу с помощью файла сокета Unix.Это происходит, даже если для указания номера порта указана опция --port
или -P
.Чтобы убедиться, что клиент устанавливает соединение TCP / IP с локальным сервером, используйте --host
или -h
, чтобы указать значение имени хоста 127.0.0.1
, или IP-адрес или имя локального сервера.Вы также можете указать протокол соединения явно, даже для localhost
, используя опцию --protocol=TCP
.
То есть, мы можем получить то же поведение из команды MySQLЛинейный клиент (соединение отклонено), пытаясь установить соединение TCP / IP с помощью
mysql -h 127.0.0.1 -P 3306 -p****
-или-
mysql -h localhost -P 3306 -p**** --protocol=TCP
MySQL идентифицирует пользователя как по user
, так и host
.
То есть 'root'@'localhost'
является пользователем , отличным от 'root'@'%'
.Эти пользователи имеют отдельные пароли, отдельные разрешения и т. Д.
Чтобы получить список пользователей, определенных в MySQL Server, мы можем выполнить запрос следующим образом:
SELECT u.user
, u.host
, u.password
, u.plugin
, u.password_expired
FROM mysql.user u
ORDER BY u.user, u.host
Обратите внимание, что если MySQL Serverзапускается без опции --skip-name-resolve
, MySQL выполнит обратный поиск IP-адреса в имени хоста.Это означает, что пользователи должны быть определены как 'user'@'db01.mydomain'
, а не 'user'@'127.0.0.1'
Ссылка: https://dev.mysql.com/doc/refman/5.7/en/host-cache.html
Если это не проблема, то, скорее всего, правило брандмауэра предотвращаетсоединение или конфигурация SELinux / AppArmor.
Снова глядя на сообщение об ошибке,
Error: connect ECONNREFUSED 127.0.0.1:3306
Это не похоже на сообщение об ошибке, которое мы ожидаем от MySQL Server.Это больше похоже на то, что в сетевом соединении было отказано, еще до того, как мы добрались до MySQL Server.
Если бы MySQL-сервер не разрешал доступ, мы ожидали бы получить такую ошибку от MySQL Server:
ERROR 1045 (28000): Access denied for user 'root'@'hostname' (using password: YES)