У меня есть контейнер для моего веб-сервера Apache и еще один для моего сервера Mysql. Я дал им 2 статических IP-адреса
NAME STATE IPV4 IPV6 AUTOSTART
-----------------------------------------------------------
apache RUNNING 10.0.3.10 - YES
mysql RUNNING 10.0.3.20 - YES
У меня проблема в том, что я не могу получить доступ к серверу Mysql с сервера Apache.
Если я запускаю это на сервере MySQL:
mysql -h 127.0.0.1 -u root -p
У меня нет проблем со входом, но если я запускаю это на веб-сервере:
mysql -h 10.0.3.20 -u root -p
Я получаю это ошибка:
ERROR 2003 (HY000): Can't connect to MySQL server on '10.0.3.20' (111)
Чего мне не хватает?
Проблема не с контейнерами, а с mysql конфигурацией. По умолчанию mysql слушает на localhost только. Необходимо измениться, это к 0.0.0.0
связывает адрес.
, Например, перед изменением Вы видите 127.0.0.1:3306. Это должно быть 0.0.0.0:3306
root@mysql:~# netstat -anp |grep LISTEN
tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN 418/mysqld
edit /etc/mysql/my.cnf
, редактируют обязывание адресной строки быть похожими на это:
bind-address = 0.0.0.0
Тогда перезапуск mysql сервис.
Подключение к mysql в mysql контейнере и создают root@ "весь" пользователь с ниже команды.
ПРЕДОСТАВЛЕНИЕ ВСЕ ПОЛНОМОЧИЯ НА . ДЛЯ 'базирований' '%' С ОПЦИЕЙ ПРЕДОСТАВЛЕНИЯ, ОПРЕДЕЛЕННОЙ 'ПАРОЛЕМ'; полномочия сброса;
Помните: замените ПАРОЛЬ паролем root для root@all, который Вы хотите иметь