2016-10-14 7 views
0

Я пытаюсь подключиться MySQL, используя Vagrant VM. я могу получить доступ MySQL с помощью [email protected] в бродячей SSH, но когда я соединяю с помощью [email protected] который является IP используется для Vagrant VM, я получаю access denied ошибку.Невозможно подключиться к MySQL с помощью 'root' @ 'IP_Address' в 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'. 

Еще сообщение об ошибке показывает:

[email protected]:/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

Я думаю, что вы устанавливаете пароль, когда вашему соединению sql не нужен пароль –

+0

Я не очень хорошо осведомлен о бродяжнике, но пытаетесь ли вы получить доступ к mysql из виртуальной машины или с хоста или другого компьютера? Я предполагаю, что локально, поэтому попробуйте создать другого пользователя и подключиться к нему вместо root или предоставить доступ к этому IP для root. «ПРЕДОСТАВЛЯЙТЕ ВСЕ ПРИВИЛЕГИИ НА *. * TO» root'@'192.168.33.10 «IDENTIFIED BY» P4 $ $ WORD 'WITH GRANT OPTION; ' –

ответ

2

Посмотрите на сообщение об ошибке. Сообщение об ошибке, указывающее, что имя пользователя поступает на сервер 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.

1

Right команда тщательно

mysql -u root -h 192.168.33.10 -p 

 Смежные вопросы

  • Нет связанных вопросов^_^