Невозможно соединить MySQL, используя ‘root’ @ ‘IP_Address’ в Vagrant

Я пытаюсь подключиться MySQL с помощью Vagrant VM,
Я могу получить доступ MySQL с помощью root@localhost в vagrant ssh, но когда я подключаюсь используя [email protected] какой 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"

[email protected] уже добавлен в 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 [email protected] -p
Enter password:
ERROR 1045 (28000): Access denied for user '[email protected]'@'localhost' (using password: YES)

0

Решение

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

 '[email protected]'

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

 'localhost'

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

 mysql -u [email protected] -p

-u user предоставляет строковое значение, в этом случае он видит '[email protected]' в качестве значения имени пользователя. @ знак и цифры и точки являются лишь частью строки имени пользователя. Там нет никакого особого значения, данное этим персонажам, это просто строка. И сервер 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
1

По вопросам рекламы [email protected]