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


20

Я намагаюся змусити MySQL-сервер (який знаходиться всередині VM), щоб він відповідав клієнту (який знаходиться на хост-машині). Усі методи повертаються однаково:

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

Я забезпечив належне переднє порт. Я також переконався, що в 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чи щось таке.
відступ

@ShaneMadden Вибачте. Ви були дуже праві. Справа була у привілеях для root@%. Дуже моя вина.
відступ

Відповіді:


37

Ви впевнені, що ви дозволили ввійти в систему з іншої системи лише для локальних хостів кореневого облікового запису в переважній більшості установок за замовчуванням? З довідкового посібника MySQL :

це означає, що в таблиці користувачів немає рядка зі значенням Host, яке відповідає хосту клієнта

Отже, у колонці немає %або взагалі немає. Перевірте свою поточну конфігурацію:10.0.2.2Host

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.