Не удается подключить Docker Wordpress контейнер к MySQL на хосте
У меня есть виртуальная машина Ubuntu, которую я развернул на своем Mac. В виртуальной машине у меня установлены MySQL и Docker, и я пытаюсь запустить контейнер из образа Wordpress и подключиться к MySQL на хосте vm. Документация по изображениям Wordpress гласит:
$ docker run --name some-wordpress -e WORDPRESS_DB_HOST=10.1.2.3:3306 \ -e WORDPRESS_DB_USER=... -e WORDPRESS_DB_PASSWORD=... -d wordpress
Я заменил IP-адрес, присвоенный хосту vm, и соответствующим переменным среды пользователя, пароля и имени базы данных. Контейнер поднимается, но через некоторое время закрывается, и журналы докера показывают:
vagrant@docker-blogs:/vagrant$ docker logs je-wordpress
WordPress not found in /var/www/html - copying now...
Complete! WordPress has been successfully copied to /var/www/html
Warning: mysqli::mysqli(): (HY000/2002): Connection refused in - on line 10
MySQL Connection Error: (2002) Connection refused
Warning: mysqli::mysqli(): (HY000/2002): Connection refused in - on line 10
MySQL Connection Error: (2002) Connection refused
Они повторяются несколько раз, затем он заканчивается.
Должно ли это быть выполнимым? Если да, что мне нужно использовать в качестве IP-адреса для хоста vm и нужно ли мне что-то настраивать?
1 ответ
Я предполагаю, что у вас есть настройки по умолчанию на этом MySQL.
Вы пытаетесь подключиться к MySQL из другой сети. Это запрещено по умолчанию в MySQL.
Ищите настройки mysql:grep bind-address /etc/mysql/my.cnf
grep skip-networking /etc/mysql/my.cnf
Закомментируйте их обоих (#bind-address
... или удалите их.
перезапустите службу MySQL
service mysql restart
Разрешить пользователю подключаться из удаленной сети. Подключитесь к mysql и выполните:
GRANT ALL ON database.* TO user@'xxx.xxx.xxx.xxx' IDENTIFIED BY 'PASSWORD';
измените базу данных, пользователя, xxx.xxx.xxx.xxx для IP-адреса, с которого вы подключаетесь, и ПАРОЛЬ.
Чтобы включить режим IDontGiveADamn, просто выполните
GRANT ALL ON *.* TO root@'%' IDENTIFIED BY 'monkey';