Невозможно подключить MySQL с помощью ‘root’ @’IP_Address’ в Vagrant

#php #mysql #vagrant #vagrantfile #mysql-5.7

#php #mysql #vagrant #vagrantfile #mysql-5.7

Вопрос:

Я пытаюсь подключиться MySQL с помощью Vagrant VM . Я могу получить доступ MySQL с помощью root@localhost vagrant ssh, но когда я подключаюсь, используя root@192.168.33.10 IP, используемый для Vagrant VM, я получаю access denied сообщение об ошибке.

Это мои настройки файла Vagrant:

   # Create a forwarded port mapping which allows access to a specific port
  # within the machine from a port on the host machine. In the example below,
  # accessing "localhost:8080" will access port 80 on the guest machine.

   config.vm.network "forwarded_port", guest: 80, host: 8080
   config.vm.network "forwarded_port", guest: 3306, host: 3306

  # Create a private network, which allows host-only access to the machine
  # using a specific IP.

   config.vm.network "private_network", ip: "192.168.33.10"
 

root@192.168.33.10 уже добавлен в MySQL, и разрешения даны

 mysql> select User,Host from mysql.user;
 ----------- --------------- 
| User      | Host          |
 ----------- --------------- 
| root      | 192.168.33.10 |
| mysql.sys | localhost     |
| root      | localhost     |
 ----------- --------------- 
3 rows in set (0.00 sec)
 

MySQL 5.7 mysqld.cnf

 I have tried bind-address to '0.0.0.0' and bind-address '192.168.33.10'.
 

По-прежнему отображается сообщение об ошибке:

 vagrant@vagrant-ubuntu-trusty:/etc/mysql/mysql.conf.d$ mysql -u root@192.168.33.10 -p
Enter password:
ERROR 1045 (28000): Access denied for user 'root@192.168.33.10'@'localhost' (using password: YES)
 

Комментарии:

1. я думаю, вы установили пароль, когда вашему sql-соединению не нужен пароль

2. Я не очень разбираюсь в vagrant, но вы пытаетесь получить доступ к mysql изнутри виртуальной машины или с хоста или другого компьютера? Я предполагаю локально, поэтому попробуйте создать другого пользователя и подключиться к нему вместо root или предоставить доступ к этому IP-адресу root GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.33.10' IDENTIFIED BY 'P4$$WORD' WITH GRANT OPTION;

Ответ №1:

Внимательно посмотрите на сообщение об ошибке. Сообщение об ошибке указывает, что имя пользователя, предоставленное серверу MySQL,:

  'user@192.168.33.10'
 

И хост, с которого MySQL видит соединение, является:

  'localhost'
 

Вот как клиент MySQL интерпретирует эти параметры:

  mysql -u root@192.168.33.10 -p
 

-u user предоставляет строковое значение, в данном случае оно отображается 'root@192.168.33.10' как значение имени пользователя. @ Знак, цифры и точки являются лишь частью строки имени пользователя. Этим символам не придается никакого особого значения, это просто строка. И сервер MySQL будет искать строку в mysql.users таблице, User значение которой соответствует этой строке. (

Чтобы найти совпадение, MySQL также будет смотреть на значение в Host столбце. Это должно соответствовать хосту, с которого, как считается, происходит соединение. Это означает 'root'@'localhost' , что пользователь отличается 'root'@'192.168.33.10' от .

-p запрос пароля

Опущены любые параметры команд для используемого протокола, хоста для подключения, номера порта и т. Д. MySQL по умолчанию, когда мы ничего из этого не предоставляем,

 -h localhost
 

как будто это то, что мы указали.


Если мы хотим подключиться к серверу MySQL по протоколу TCP / IP, а не с помощью сокета Unix, нам нужно указать -h hostname или -h ipaddress , или указать --protocol=TCP

Имя хоста « localhost : имеет особое значение в MySQL. Это соединение через сокет Unix, а не через IP-адрес обратной связи, который мы могли бы ожидать.


Например, для подключения к серверу MySQL на локальном компьютере, прослушивая порт 3306 по умолчанию, используя IP-адрес обратной связи:

   mysql -h 127.0.0.1 -u root -p
 

Большая часть этой информации довольно хорошо описана в справочном руководстве по MySQL.

http://dev.mysql.com/doc/refman/5.7/en/connecting.html

Кроме того, по умолчанию MySQL использует обратный DNS-поиск для преобразования IP-адресов в имена хостов.

Если мы хотим использовать IP-адреса в Host столбце таблицы mysql.users, нам нужно отключить обратный поиск DNS. Мы делаем это, включая эту опцию:

 skip_name_resolve
 

В файле my.cnf конфигурации.

Ответ №2:

Правильная команда

 mysql -u root -h 192.168.33.10 -p