Хосту 'xxx.xx.xxx.xxx' не разрешено подключаться к этому серверу MySQL

Это должно быть очень просто, но я не могу заставить его работать.
Я просто пытаюсь удаленно подключиться к моему серверу MySQL.

подключение как

mysql -u root -h localhost -p  

работает нормально, но при попытке

mysql -u root -h 'any ip address here' -p

не удается с ошибкой

ERROR 1130 (00000): Host ''xxx.xx.xxx.xxx'' is not allowed to connect to this MySQL server

В таблице mysql.user есть точно такая же запись для пользователя 'root' с хостом 'localhost', как и другая с хостом '%'.

Я в растерянности и понятия не имею, как действовать дальше. Любые идеи приветствуются.

Комментарии к вопросу (1)
Решение

Возможно, это мера предосторожности. Вы можете попробовать добавить новую учетную запись администратора:

mysql> CREATE USER 'monty'@'localhost' IDENTIFIED BY 'some_pass';
mysql> GRANT ALL PRIVILEGES ON *.* TO 'monty'@'localhost'
    ->     WITH GRANT OPTION;
mysql> CREATE USER 'monty'@'%' IDENTIFIED BY 'some_pass';
mysql> GRANT ALL PRIVILEGES ON *.* TO 'monty'@'%'
    ->     WITH GRANT OPTION;

Хотя, как отметил Паскаль и другие, это не очень хорошая идея - иметь пользователя с таким доступом, открытым для любого IP. Если вам нужен административный пользователь, используйте root и оставьте его на localhost. Для любых других действий укажите именно те привилегии, которые вам нужны, и ограничьте доступ пользователя, как предлагает Паскаль ниже.

Редактировать:

Из FAQ по MySQL:

Если вы не можете понять, почему вы получаете. Access denied, удалите из пользователя таблицы все записи, которые имеют Host значения, содержащие символы подстановки (записи которые содержат '%' или '_' символы). A очень распространенной ошибкой является вставка новой запись с Host='%' и User='some_user', думая, что это позволяет указать localhost для того, чтобы &gt. подключаться с той же машины. На сайте причина, по которой это не работает, заключается в том, что привилегии по умолчанию включают в себя запись с Host='localhost' и User=''. Поскольку эта запись имеет значение Host значение 'localhost', которое является более конкретным, чем '%', оно используется в предпочтение перед новой записью при подключении с localhost! Правильная процедура заключается в том, чтобы вставить вторую запись с Host='localhost' и User='some_user', или удалить запись запись с Host='localhost' и User=''. После удаления записи, не забудьте выпустить оператор FLUSH PRIVILEGES , чтобы перезагрузить таблицы грантов. См. также раздел 5.4.4, "Доступ Контроль, этап 1: подключение Верификация".

Комментарии (8)

Нужно создать нового пользователя MySQL и назначать привилегии, а ниже в строке запроса через phpmyadmin или в командной строке:

CREATE USER 'username'@'localhost' IDENTIFIED BY 'password';

GRANT ALL PRIVILEGES ON *.* TO 'username'@'localhost' WITH GRANT OPTION;

CREATE USER 'username'@'%' IDENTIFIED BY 'password';

GRANT ALL PRIVILEGES ON *.* TO 'username'@'%' WITH GRANT OPTION;

FLUSH PRIVILEGES;

После этого со всех четырех запросов, она должна соединиться с Имя пользователя / пароль

Комментарии (5)

Мое сообщение об ошибке, был похож и сказал, 'хост-XXX не разрешено подключаться к этому серверу MySQL' хотя я был с помощью корня. Здесь's, как убедиться, что корень имеет правильные разрешения.

Мои настройки:

  • Убунту 14.04 ЛТС
  • MySQL с версии 5.5.37

Решение

  1. Откройте файл под 'и т. д/MySQL в/мой.КНФ'
  2. Проверьте:
  • порт (по умолчанию это 'порт = 3306')
  • персонализация-адрес (по умолчанию это 'привязать-адрес = 127.0.0.1'; Если вы хотите открыть для всех, то просто закомментируйте эту строку. На моем примере, я'Лл сказать реальный сервер, на 10.1.1.7)
  1. Теперь доступ к базе данных MySQL на ваш сервер (скажем, удаленный-адрес 123.123.123.123 на порт 3306 пользователя 'корне' и я хочу, чтобы изменить разрешения на базе 'dataentry'. Не забудьте сменить IP-адрес, порт и имя базы данных для настройки)

в mysql -u в корень -п Введите пароль: <введите пароль> для MySQL>грант все по . в корень@'123.123.123.123' определены 'положить-свой-пароль'; в MySQL>очистить привилегии; для MySQL>выход

  1. судо служба тузды перезагрузить
  2. Теперь вы должны иметь возможность удаленного подключения к вашей базе данных. Например, Я'м, используя верстак MySQL и положить в 'Хоста:10.1.1.7', 'порт:3306', 'имя пользователя:корень'
Комментарии (4)

Вы должны предоставить доступ пользователю с любого узла.

Это, как вы добавить новые привилегии от phpmyadmin

Гото привилегии и gt; Добавить нового пользователя

Выберите любой хост для нужного пользователя

Комментарии (1)

Просто выполните следующие действия:

  1. подключиться к MySQL
mysql -uroot -p
  1. создать пользователей
CREATE USER 'user'@'%' IDENTIFIED BY 'password';
  1. предоставление разрешений
 GRANT ALL PRIVILEGES ON \*.\* TO 'user'@'%' WITH GRANT OPTION;
  1. промыть привилегии
FLUSH PRIVILEGES;
Комментарии (2)

Сообщение *Host ''xxx.xx.xxx.xxx'' is not allowed to connect to this MySQL server является ответом сервера MySQL клиенту MySQL. Обратите внимание, что он возвращает IP-адрес, а не имя хоста.

Если вы пытаетесь подключиться с помощью команды mysql -h -u -p, а он возвращает это сообщение с IP-адресом, значит сервер MySQL не может выполнить обратный поиск на клиенте. Это очень важно, потому что именно так происходит сопоставление клиента MySQL с грандами.

Убедитесь, что вы можете выполнить nslookup FROM MySQL server. Если это не сработает, значит, в DNS-сервере нет записи. В качестве альтернативы, вы можете внести запись в файл HOSTS сервера MySQL (` `

Комментарии (1)

Если вы изменяете таблицы грантов вручную (используя INSERT, UPDATE и т.д.), вам следует выполнить оператор оператор FLUSH PRIVILEGES, чтобы сообщить серверу о перезагрузке таблиц грантов.

PS: Я бы не рекомендовал разрешать любой хост для подключения любому пользователю (особенно не использовать root). Если вы используете mysql для клиент-серверного приложения, предпочитайте адрес подсети. Если вы используете mysql с веб-сервером или сервером приложений, используйте определенные IP-адреса.

Комментарии (0)

Простой способ:

Grant All Privileges ON *.* to 'USER_NAME'@'%' Identified By 'YOUR_PASSWORD'; 

тогда

FLUSH PRIVILEGES;

молодец!

Комментарии (2)

Большинство ответов здесь показать вам создание пользователей с двух принимающих значения: одно для локальным localhost, и %.

Обратите внимание, что кроме встроенного пользователя localhost как корень, вы Дон'т должны сделать это. Если вы просто хотите сделать новый пользователь, который может войти в любом месте, вы можете использовать

CREATE USER 'myuser'@'%' IDENTIFIED BY 'mypassword';
GRANT  ON  TO myuser;

и он будет работать нормально. (Как отметили другие, это'ы ужасная идея, чтобы предоставить права администратора для пользователя из любого домена.)

Комментарии (0)

Просто использовать интерфейс, предоставляемый MySQL'инструмент ы (сам):

Нажмите на диспетчер пользователей:

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

Комментарии (0)

простой способ это войти в phpmyadmin с помощью учетной записи root , есть Гото базы данных MySQL и выберите пользователя стол , там отредактировать root-доступа, а в поле Добавить % Дикие карты . а потом через SSH очистить привилегии

 FLUSH PRIVILEGES;
Комментарии (1)

Просто найти лучший способ, чтобы сделать это из панели управления хостингом (я'м с помощью DirectAdmin)

просто перейдите к целевому серверу БД в панели управления, в моем случае: Управления и MySQL ГТ; выберите свой ДБ -> вы найдете: "у хозяев открыть и", Просто добавьте свой удаленный хост вот и работает сейчас!

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

Я'м надеюсь, это было полезно для вас тоже.

Комментарии (0)

Если это недавняя установка базы данных MySQL, тогда прежде чем изменять что-то еще, попробуйте просто выполнить эту команду, а затем попробуйте снова:

flush privileges;

Уже одно это устраняет проблему для меня на Ubuntu 16.04, в MySQL 5.7.20. YMMV.

Комментарии (0)

Ну что вы можете сделать, это просто откройте для MySQL.файл cfg и вам нужно изменить привязку-адреса к этому

привязки-адрес = 127.0.0.1

а затем перезапустите MySQL и вы сможете подключить этот сервер к этому.

Посмотреть это вы можете есть форма идеи, что.

это реальная соль

Комментарии (3)

Если вам случится быть запущен на Windows, простое решение для запуска экземпляра мастера настройки сервера MySQL. Это в вашей группе MySQL в меню "Пуск". На второй из последних экрана нажмите на поле с надписью "и разрешить root доступ с удаленных компьютеров-то".

Комментарии (0)

Решение управления cPanel

Зайдите в cPanel, искать удаленное подключение к MySQL. Добавить IP в поле ввода:

Хозяин (% подстановочные допускается)

Комментарий к помните, что IP-адреса,. Это было для меня.

Комментарии (0)

На всякий случай, что кто-то сталкивается с этой проблемой испытывает его изнутри сам, это произошло:

Я уже подключен к удаленной базе данных (в сам) и работал в течение нескольких часов. После этого я оставил систему на несколько минут, затем вернулся, чтобы продолжить мои работы ошибки 1130 ! Нельзя объять необъятное; перезагрузки сам не'т исправить это. Затем я перезагрузил систему - все равно это't работа.

Так я пробовал подключение с терминала - это сработало. Затем повторить это сам ... и это сработало. Я могу'т объяснить это 'случайных компьютерных причудливости', но я думаю, что это может помочь кому-то.

Комментарии (0)

Работая на DirectAdmin;

  1. Перейти в DirectAdmin`.
  2. Перейти в Управление MySQL`.
  3. Выберите "база данных".
  4. На вкладке расстояние хост, есть поле. Вы должны заполнить это поле по ХХХ.ХХ.ХХХ.ХХ.
  5. Нажмите на кнопку Добавить.

Закончил. Теперь вы можете получить доступ к этой БД по вашему your_database_username & your_database_password. Так Просто!

Комментарии (0)

Этот ответ может помочь кому-то...

Все эти ответы не помогут, то я понял, что забыл проверить одну важную вещь.. порт :)

У меня есть MySQL работает в контейнере докер, работающий на другом порту. Я показывал на свой хост на порт 3306, которая у меня есть сервер MySQL работает. Мой контейнер предоставляет сервер на порту 33060. Так что все это время я смотрел на неправильный сервер! дох!

Комментарии (0)
CREATE USER 'username'@'localhost' IDENTIFIED BY 'password';
FLUSH PRIVILEGES;

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

Комментарии (0)