Почему я не могу подключиться к mysql?
mysql -u root -ptest101 -h xxx.xxx.xxx.xxx
ERROR 1130 (HY000): Host 'xxx.xxx.xxx.xxx' is not allowed to connect to this MySQL server
В my.cnf у меня есть
# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
bind-address = 0.0.0.0
Я также запускал ниже...
'UPDATE mysql.user SET Password = PASSWORD('test101') WHERE User = 'root';
FLUSH PRIVILEGES;
Я могу получить доступ на главной машине с помощью mysql -u root -ptest101, но не используя mysql -u root -ptest101 -h xxx.xxx.xxx.xxx
Вау... почему это происходит? Я nubuntj 12.04
mysql> SELECT host FROM mysql.user WHERE User = 'root';
+---------------------------------------------+
| host |
+---------------------------------------------+
| % |
| 127.0.0.1 |
| ::1 | |
| localhost |
+---------------------------------------------+
5 rows in set (0.00 sec)
Ваша учетная запись root
, и это выражение относится к любой учетной записи, может быть добавлено только с доступом к локальному хосту (что рекомендуется).
Вы можете проверить это с помощью:
SELECT host FROM mysql.user WHERE User = 'root';
Если вы видите только результаты с localhost
и 127.0.0.1
, вы не можете подключиться к внешнему источнику. Если вы видите другие IP-адреса, но не тот, с которым вы подключаетесь, - это также указание.
Вам нужно будет добавить IP-адрес каждой системы, к которой вы хотите предоставить доступ, а затем предоставить привилегии:
CREATE USER 'root'@'ip_address' IDENTIFIED BY 'some_pass';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'ip_address';
Если вы видите %
, то тогда возникает другая проблема, так как это "любой удаленный источник". Если вы хотите, чтобы все/все системы подключались через root, используйте шаблон %
для предоставления доступа:
CREATE USER 'root'@'%' IDENTIFIED BY 'some_pass';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%';
Наконец, перезагрузите разрешения, и вы сможете иметь удаленный доступ:
FLUSH PRIVILEGES;
Следующие два шага работали отлично для меня:
Прокомментируйте адрес привязки из файла /etc/mysql/my.cnf
:
#bind-address = 127.0.0.1
Запустите следующий запрос в phpMyAdmin:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%'; FLUSH PRIVILEGES;
sudo service mysql restart
$mysql -u root --host=127.0.0.1 -p
mysql>use mysql
mysql>GRANT ALL ON *.* to root@'%' IDENTIFIED BY 'redhat@123';
mysql>FLUSH PRIVILEGES;
mysql> SELECT host FROM mysql.user WHERE User = 'root';
mysql > СОЗДАТЬ ПОЛЬЗОВАТЕЛЯ 'name' @'%' ИДЕНТИФИЦИРОВАН BY 'passWord'; Ответить затронутые строки (0,00 сек)
mysql > ПРЕДОСТАВЛЯЙТЕ ВСЕ ПРИВИЛЕГИИ. Назвать'@'%'; Запросить OK, 0 строк (0,00 сек)
mysql > ПРИВИЛЕГИИ FLUSH; Query OK, 0 строк (0.00 sec)
MySQL >
надеюсь, что это поможет кому-то...
Для тех, кто имеет доступ к cpanel, есть более простой способ обойти его.
войти в cpanel = > "Удаленный MySQL" в разделе DATABASES:
Добавьте IP-адрес/имя хоста, к которому вы обращаетесь
сделано!!!
Перейдите в PhpMyAdmin, нажмите на нужную базу данных, перейдите на вкладку Privilages и создайте нового пользователя "remote" и дайте ему все привилегии и в поле хоста установите опцию "Любой хост" (%).
есть простой способ исправить эту ошибку
просто замените файлы в папке: C:\xampp\mysql\data\mysql
с файлами на: C:\xampp\mysql\backup\mysql
user@host
, где любая из пар может быть подстановочным знаком. Возможно, вы используете правильное имя пользователя, но вы также предоставили права хосту?