Это должно быть очень просто, но я не могу заставить его работать.
Я просто пытаюсь удаленно подключиться к моему серверу 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', как и другая с хостом '%'.
Я в растерянности и понятия не имею, как действовать дальше. Любые идеи приветствуются.
Возможно, это мера предосторожности. Вы можете попробовать добавить новую учетную запись администратора:
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 для того, чтобы >. подключаться с той же машины. На сайте причина, по которой это не работает, заключается в том, что привилегии по умолчанию включают в себя запись с Host='localhost' и User=''. Поскольку эта запись имеет значение Host значение 'localhost', которое является более конкретным, чем '%', оно используется в предпочтение перед новой записью при подключении с localhost! Правильная процедура заключается в том, чтобы вставить вторую запись с Host='localhost' и User='some_user', или удалить запись запись с Host='localhost' и User=''. После удаления записи, не забудьте выпустить оператор FLUSH PRIVILEGES , чтобы перезагрузить таблицы грантов. См. также раздел 5.4.4, "Доступ Контроль, этап 1: подключение Верификация".
Нужно создать нового пользователя 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;
После этого со всех четырех запросов, она должна соединиться с Имя пользователя / пароль
Мое сообщение об ошибке, был похож и сказал, 'хост-XXX не разрешено подключаться к этому серверу MySQL' хотя я был с помощью корня. Здесь's, как убедиться, что корень имеет правильные разрешения.
Мои настройки:
Решение
в mysql -u в корень -п Введите пароль: <введите пароль> для MySQL>грант все по . в корень@'123.123.123.123' определены 'положить-свой-пароль'; в MySQL>очистить привилегии; для MySQL>выход
Вы должны предоставить доступ пользователю с любого узла.
Это, как вы добавить новые привилегии от phpmyadmin
Гото привилегии и gt; Добавить нового пользователя
Выберите любой хост для нужного пользователя
Просто выполните следующие действия:
mysql -uroot -p
CREATE USER 'user'@'%' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON \*.\* TO 'user'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;
Сообщение *Host ''xxx.xx.xxx.xxx'' is not allowed to connect to this MySQL server
является ответом сервера MySQL клиенту MySQL. Обратите внимание, что он возвращает IP-адрес, а не имя хоста.
Если вы пытаетесь подключиться с помощью команды mysql -h<hostname> -u<somebody> -p
, а он возвращает это сообщение с IP-адресом, значит сервер MySQL не может выполнить обратный поиск на клиенте. Это очень важно, потому что именно так происходит сопоставление клиента MySQL с грандами.
Убедитесь, что вы можете выполнить nslookup <mysqlclient>
FROM MySQL server. Если это не сработает, значит, в DNS-сервере нет записи. В качестве альтернативы, вы можете внести запись в файл HOSTS сервера MySQL (<ipaddress> <fullyqualifiedhostname> <hostname>
<- Порядок здесь может иметь значение).
Запись в файле host моего сервера, позволяющая обратный поиск клиента MySQL, решила эту проблему.
Если вы изменяете таблицы грантов вручную (используя INSERT, UPDATE и т.д.), вам следует выполнить оператор
оператор FLUSH PRIVILEGES
, чтобы сообщить серверу о перезагрузке таблиц грантов.
PS: Я бы не рекомендовал разрешать любой хост для подключения любому пользователю (особенно не использовать root
). Если вы используете mysql для клиент-серверного приложения, предпочитайте адрес подсети. Если вы используете mysql с веб-сервером или сервером приложений, используйте определенные IP-адреса.
Простой способ:
Grant All Privileges ON *.* to 'USER_NAME'@'%' Identified By 'YOUR_PASSWORD';
тогда
FLUSH PRIVILEGES;
молодец!
Большинство ответов здесь показать вам создание пользователей с двух принимающих значения: одно для локальным localhost
, и %
.
Обратите внимание, что кроме встроенного пользователя localhost как корень, вы Дон'т должны сделать это. Если вы просто хотите сделать новый пользователь, который может войти в любом месте, вы можете использовать
CREATE USER 'myuser'@'%' IDENTIFIED BY 'mypassword';
GRANT <whatever privileges are appropriate> ON <relevant tables> TO myuser;
и он будет работать нормально. (Как отметили другие, это'ы ужасная идея, чтобы предоставить права администратора для пользователя из любого домена.)
простой способ это войти в phpmyadmin с помощью учетной записи root , есть Гото базы данных MySQL и выберите пользователя стол , там отредактировать root-доступа, а в поле Добавить % Дикие карты . а потом через SSH очистить привилегии
FLUSH PRIVILEGES;
Просто найти лучший способ, чтобы сделать это из панели управления хостингом (я'м с помощью DirectAdmin)
просто перейдите к целевому серверу БД в панели управления, в моем случае: Управления и MySQL ГТ; выберите свой ДБ -> вы найдете: "у хозяев открыть и", Просто добавьте свой удаленный хост вот и работает сейчас!
Я думаю, что есть подобный вариант на других панелей, как плеск и т. д..
Я'м надеюсь, это было полезно для вас тоже.
Если это недавняя установка базы данных MySQL, тогда прежде чем изменять что-то еще, попробуйте просто выполнить эту команду, а затем попробуйте снова:
flush privileges;
Уже одно это устраняет проблему для меня на Ubuntu 16.04, в MySQL 5.7.20. YMMV.
Ну что вы можете сделать, это просто откройте для MySQL.файл cfg и вам нужно изменить привязку-адреса к этому
привязки-адрес = 127.0.0.1
а затем перезапустите MySQL и вы сможете подключить этот сервер к этому.
Посмотреть это вы можете есть форма идеи, что.
Если вам случится быть запущен на Windows, простое решение для запуска экземпляра мастера настройки сервера MySQL. Это в вашей группе MySQL в меню "Пуск". На второй из последних экрана нажмите на поле с надписью "и разрешить root доступ с удаленных компьютеров-то".
Решение управления cPanel
Зайдите в cPanel, искать удаленное подключение к MySQL. Добавить IP в поле ввода:
Хозяин (% подстановочные допускается)
Комментарий к помните, что IP-адреса,. Это было для меня.
На всякий случай, что кто-то сталкивается с этой проблемой испытывает его изнутри сам, это произошло:
Я уже подключен к удаленной базе данных (в сам) и работал в течение нескольких часов. После этого я оставил систему на несколько минут, затем вернулся, чтобы продолжить мои работы ошибки 1130 ! Нельзя объять необъятное; перезагрузки сам не'т исправить это. Затем я перезагрузил систему - все равно это't работа.
Так я пробовал подключение с терминала - это сработало. Затем повторить это сам ... и это сработало. Я могу'т объяснить это 'случайных компьютерных причудливости', но я думаю, что это может помочь кому-то.
Работая на DirectAdmin;
расстояние хост, есть поле. Вы должны заполнить это поле по ХХХ.ХХ.ХХХ.ХХ
.Добавить
. Закончил. Теперь вы можете получить доступ к этой БД по вашему your_database_username
& your_database_password
.
Так Просто!
Этот ответ может помочь кому-то...
Все эти ответы не помогут, то я понял, что забыл проверить одну важную вещь.. порт :)
У меня есть MySQL работает в контейнере докер, работающий на другом порту. Я показывал на свой хост на порт 3306, которая у меня есть сервер MySQL работает. Мой контейнер предоставляет сервер на порту 33060. Так что все это время я смотрел на неправильный сервер! дох!
CREATE USER 'username'@'localhost' IDENTIFIED BY 'password';
FLUSH PRIVILEGES;
это ошибка, потому что нет пароля к корню , и это, возможно, произошло с вами, когда вы пытаетесь подключиться извне .