Хост ХХХ.ХХ.ХХХ.ХХХ не разрешено подключаться к этому серверу 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", как и другой с хостом"%".
Я в своем уме, и у меня нет идея, как действовать дальше.
Любые идеи приветствуются.
20 ответов:
возможно, это мера предосторожности. Вы можете попробовать добавить новую учетную запись администратора:
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. Для любого другого действия укажите точно привилегии, которые вам нужны, и ограничьте доступность пользователя, как предлагает Паскаль ниже.
Edit:
из MySQL Часто задаваемые вопросы:
Если вы не можете понять, почему вы получаете Доступ запрещен, удалить из пользователя таблица все записи, которые имеют хост значения, содержащие подстановочные знаки (записи которые содержат символы ' % 'или'_'). Один очень распространенной ошибкой является вставка нового запись с хостом= ' % ' и User= 'some_user', думая, что это позволяет указать localhost в подключение с той же машины. Этот почему это не работает, заключается в том, что привилегии по умолчанию включают вход с Host= 'localhost' и Пользователь.''= Потому что эта запись имеет хост значение 'localhost', то есть больше специфический чем"%", оно использован внутри предпочтение новой записи, когда соединение с localhost! Правильный процедура заключается в том, чтобы вставить вторую запись с Host= 'localhost' и Some_user пользователей='', или удалить запись с хостом= 'localhost' и Пользователь.''= После удаления записи, не забудьте выдать флеш привилегии заявление для перезагрузки таблицы. См. также раздел 5.4.4, "доступ Управления, Этап 1: Подключение Проверка."
нужно создать
new MySQL Userи назначить привилегии, как показано ниже вQuery promptчерез 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;после выполнения всех четырех запросов, он должен соединиться с
username / password
мое сообщение об ошибке было похоже и сказал'хост XXX не может подключиться к этому серверу MySQL ' хотя я использовал root. Вот как убедиться, что root имеет правильные разрешения.
Мои настройки:
- Ubuntu 14.04 LTS
- MySQL v5.5. 37
решение
- откройте файл под ' etc / mysql / my.cnf'
Регистрация ибо:
- порт (по умолчанию это 'port = 3306')
- bind-address (по умолчанию это 'bind-address = 127.0.0.1'; если вы хотите открыть для всех, то просто закомментируйте эту строку. Для моего примера, я скажу, что фактический сервер находится на 10.1.1.7)
теперь доступ к базе данных MySQL на вашем фактическом сервере (скажем, ваш удаленный адрес 123.123.123.123 в порту 3306 как пользователь "root", и я хочу изменить разрешения на базу данных "dataentry". Не забудьте изменить IP-адрес, порт и имя базы данных в настройках)
mysql -u root -p Enter password: <enter password> mysql>GRANT ALL ON *.* to root@'123.123.123.123' IDENTIFIED BY 'put-your-password'; mysql>FLUSH PRIVILEGES; mysql>exitsudo service mysqld restart
- теперь вы должны иметь возможность удаленного подключения к вашей базе данных. Например, я использую MySQL Workbench и вставляю 'Hostname: 10.1.1.7', 'Port:3306','Username:root'
вам нужно предоставить доступ к пользователю с любого имени хоста.
вот как вы добавляете новые привилегии от phpmyadmin
goto привилегии > добавить нового пользователя
выберите Любой Узел для нужного имени пользователя
просто выполните следующие действия:
1) Подключение к mysql
mysql -uroot -p2) создать
CREATE USER 'user'@'%' IDENTIFIED BY 'password';3) предоставления разрешений
GRANT ALL PRIVILEGES ON \*.\* TO 'user'@'%' WITH GRANT OPTION;4) Flush privileges
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>С сервера MySQL. Если это не сработает, тогда нет записи на DNS-сервере. Кроме того, вы можете поместить запись в файл HOSTS сервера MySQL (<ipaddress> <fullyqualifiedhostname> <hostname>запись в файле хоста моего сервера, позволяющая обратный поиск клиента MySQL, решила эту самую проблему.
Если вы измените таблицы грантов вручную (с помощью INSERT, UPDATE и т. д.), вы должны выполнить а
FLUSH PRIVILEGESоператор, чтобы сказать серверу перезагрузить таблицы грантов.PS: Я бы не рекомендовал разрешить любой хост для подключения любой пользователь (особенно не
rootиспользовать). Если вы используете mysql для клиент-серверного приложения, предпочтите адрес подсети. Если вы используете mysql с веб-сервером или сервером приложений, используйте определенные IP-адреса.
простой способ-войти в phpmyadmin с учетной записью root , там перейти в базу данных mysql и выбрать таблицу пользователей, там отредактировать учетную запись root и в поле хоста добавить % wild card . а потом через ssh флеш привилегии
FLUSH PRIVILEGES;
просто используйте интерфейс, предоставляемый инструментом GUI MySql (SQLyog):
нажмите на диспетчер пользователей :
теперь, если вы хотите предоставить доступ к любому другому удаленному ПК, просто убедитесь, что, как и в нижней картинке, значение поля Хоста равно % (что является подстановочным знаком)
Если это недавняя установка mysql, то перед изменением чего-либо еще, попробуйте просто выполнить эту команду, а затем повторите попытку:
flush privileges;это само по себе устраняет проблему для меня на Ubuntu 16.04, mysql 5.7.20. МММ.
Ну, что вы можете сделать, это просто открыть mysql.cfg файл и вы должны изменить привязку-адрес к этому
bind-address = 127.0.0.1
и перезапустите MySQL и вы сможете подключить этот сервер к этому.
посмотрите это вы можете иметь форму идеи, что.
Если вы работаете в Windows;простое решение-запустить мастер настройки экземпляра сервера MySQL. Он находится в вашей группе MYSQL в меню Пуск. На втором от последнего экрана нажмите на поле, которое говорит "разрешить корневой доступ с удаленных машин".
большинство ответов здесь показывают, что вы создаете пользователей с двумя значениями хоста: один для
localhost, и%.обратите внимание, что за исключением встроенного пользователя localhost, такого как root, вам не нужно этого делать. Если вы просто хотите создать нового пользователя, который может войти в систему из любого места, вы можете использовать
CREATE USER 'myuser'@'%' IDENTIFIED BY 'mypassword'; GRANT <whatever privileges are appropriate> ON <relevant tables> TO myuser;и это будет работать просто отлично. (Как уже упоминалось, это ужасная идея предоставить административные привилегии пользователю из любого домена.)
просто найдите лучший способ сделать это с помощью панели управления хостингом (я использую DirectAdmin здесь)
просто перейдите на целевой сервер БД в панели управления, в моем случае: MySQL management - > выберите свою БД - > вы найдете: "Access Hosts", просто добавьте свой удаленный хост здесь и его работу сейчас!
Я думаю, что есть аналогичная опция на других C. панелях, таких как plesk и т. д..
Я надеюсь, это было полезно для вас тоже.
на случай, если кто-то сталкивается с этой проблемой испытывает его изнутри SQLyog, это произошло:
я подключился к удаленной базе данных (изнутри SQLyog) и работал в течение нескольких часов. После этого я покинул систему на несколько минут, а затем вернулся, чтобы продолжить свою работу -ошибка 1130 ! Ничего из того, что я пробовал, не сработало; перезапуск SQLyog не исправил его. Затем я перезапустил систему-она все еще не работала.
поэтому я попытался подключиться с терминала - это сработало. Затем повторить его сам ... и это сработало. Я не могу объяснить это иначе, чем "случайная компьютерная причуда", но я думаю, что это может кому-то помочь.
Я также столкнулся с той же проблемой. Я решил это за 2 мин для меня я просто белый список ip через cpanel
Предположим, вы пытаетесь подключить базу данных сервера B с сервера A. Перейдите на сервер B Cpanel- > удаленный MySQL - > введите IP-адрес сервера и все.
проблема: root@localhost не может подключиться к новой установке mysql-community-server на openSUSE 42.2-1.150.архитектуру x86_64. Mysql отказывается от соединений-период.
устранение:
$ ls -l /var/lib/mysql/mysql/user.* -rw-rw---- 1 mysql mysql 0 Apr 29 19:44 /var/lib/mysql/mysql/user.MYD -rw-rw---- 1 mysql mysql 1024 Apr 29 19:44 /var/lib/mysql/mysql/user.MYI -rw-rw---- 1 mysql mysql 10684 Apr 29 19:44 /var/lib/mysql/mysql/user.frmпользовательский файл.MYD имеет 0 размер (действительно ?!). Я скопировал все 3 файла из другой рабочей системы.
$ /usr/sbin/rcmysql stop $ cd /var/lib/mysql/mysql/ $ scp root@othersytem:/var/lib/mysql/mysql/user.* ./ $ /usr/sbin/rcmysql start $ cd - $ mysql -u root -pя смог войти в систему. Тогда это был просто вопрос повторного применения всех привилегий схемы. Кроме того, если вы отключили IPv6, повторно включите его временно так что root@::1 учетная запись также может работать.
этот ответ может помочь кому-то...
все эти ответы не помогли, тогда я понял, что забыл проверить одну важную вещь.. Порт :)
У меня mysql работает в контейнере docker, работающем на другом порту. Я указывал на свою хост-машину на порту 3306, на котором у меня работает сервер mysql. Мой контейнер предоставляет сервер на порту 33060. Так что все это время я смотрел не на тот сервер! дох!
Если вы пытаетесь выполнить запрос mysql с определением connectionstring, вы получите эту ошибку.
возможно вы забыли определить строку подключения перед выполнением. вы это проверили? (извините за плохой английский)
все ответы здесь не работали в моем случае, поэтому я гость, это может помочь другим пользователям в будущем. Это также может быть проблемой в нашем коде, а не только в MySQL.
если вы используете
VB.NETвместо этого кода:
Dim server As String = My.Settings.DB_Server Dim username As String = My.Settings.DB_Username Dim password As String = My.Settings.DB_Password Dim database As String = My.Settings.DB_Database MysqlConn.ConnectionString = "server=" & server & ";" _ & "user id=" & username & ";" _ & "password=" & password & ";" _ & "database=" & database MysqlConn = New MySqlConnection()вам нужно двигаться
MysqlConn = New MySqlConnection()на первой линии. Так что это было бы такMysqlConn = New MySqlConnection() Dim server As String = My.Settings.DB_Server Dim username As String = My.Settings.DB_Username Dim password As String = My.Settings.DB_Password Dim database As String = My.Settings.DB_Database MysqlConn.ConnectionString = "server=" & server & ";" _ & "user id=" & username & ";" _ & "password=" & password & ";" _ & "database=" & database





Comments