Доступ к серверу MySQL через VirtualBox


20

Я пытаюсь заставить сервер MySQL (который находится внутри ВМ) отвечать клиенту (который находится на хост-машине). Все методы возвращают одно и то же:

Host '10.0.2.2' is not allowed to connect to this MySQL server

Я обеспечил правильный порт forwardind. Я также убедился, что у my.cnfменя есть следующие строки:

skip-external-locking
bind-address = 0.0.0.0

Это не сработало для меня. Я также попытался немного поиграть:

bind-address = 10.0.2.2

Но это также не работает для меня - сервер просто не может запуститься.

Есть идеи, где я не прав?

ОБНОВИТЬ. Я не проверял привилегии для root@%как в Как изменить привилегии для пользователя MySQL, который уже создан?

Решаемые.


Какие учетные записи пользователей вы создали в MySQL?
Шейн Мэдден

Мой сведенью это root:root. Я сомневаюсь, что проблема в логинах, в противном случае сообщение об ошибке будет указывать Access denied for root@10.0.2.2что- то Lile или что-то.
обороняться

@ShaneMadden Извините. Вы были довольно правы. Дело было в привилегиях для root@%. Довольно моя вина.
обороняться

Ответы:


37

В подавляющем большинстве установок по умолчанию корневая учетная запись доступна только для localhost. Вы уверены, что разрешили входить в нее из другой системы? Из справочного руководства по MySQL :

это означает, что в пользовательской таблице нет строки со значением Host, соответствующим клиентскому хосту

Таким образом, нет %или 10.0.2.2в Hostстолбце вообще. Проверьте ваш текущий конфиг:

select user,host from mysql.user where user='root';

Вероятно, вы захотите создать новую корневую запись с тем же паролем, что и сейчас.

create user 'root'@'10.0.2.2' identified by 'yourpassword';
grant all privileges on *.* to 'root'@'10.0.2.2' with grant option;
flush privileges;

1
Ага. Спасибо. Я также решил это только минуту назад, как вы заявили здесь. Это была точно моя проблема.
обороняться

1
Ответ Шейна верен и может быть запущен в одной команде, полезно, если вы используете что-то вроде скрипта Ansible / Vagrant для автоматизации:mysql -e "create user 'root'@'10.0.2.2' identified by 'yourpassword'; grant all privileges on *.* to 'root'@'10.0.2.2' with grant option; flush privileges;"
KayakinKoder
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.