У меня есть виртуальная машина Azure, содержащая систему Ubuntu, с сервером MySQL, и я хочу получить доступ к базе данных из веб-приложения. Когда я установил MySQL-сервер, я выполнил
$ iptables -I INPUT -p tcp --dport 3306 -m state --state NEW,ESTABLISHED -j ACCEPT
$ iptables -I OUTPUT -p tcp --sport 3306 -m state --state ESTABLISHED -j ACCEPT
разрешить TCP-соединения.
В файле /etc/mysql/my.cnf
я добавил bind-address = 168.63.178.87
, который представляет собой «Виртуальный IP-адрес», который мне сообщает панель Azure.
В mysql пользователь, которого я использую для подключения, имеет все необходимые права доступа к базе данных (я думаю):
mysql> SHOW GRANTS FOR 'user'@'%';
+-------------------------------------------------------------------------------------------------------------------+
| Grants for user@% |
+-------------------------------------------------------------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'user'@'%' IDENTIFIED BY PASSWORD 'pass_ommited' |
| GRANT ALL PRIVILEGES ON `database`.* TO 'user'@'%' |
+-------------------------------------------------------------------------------------------------------------------+
Но когда приложение пытается подключиться к базе данных, я получаю сообщение об ошибке:
CDbConnection failed to open the DB connection: SQLSTATE[HY000] [2003] Can't connect to MySQL server on '168.63.178.87' (4)
(Это приложение для фреймворка Yii, на случай, если оно имеет значение).
У меня полный SSH-доступ к виртуальной машине, используя указанный IP-адрес и определенный порт.
Azure также сообщает мне «Внутренний IP-адрес», то есть 10.78.28.85
.
Я пытался привязать сервер MySQL к этому адресу и к 0.0.0.0
, но ни один не помог.
Я подозреваю, что проблема заключается в перенаправлении для доступа к моему конкретному экземпляру на сервере, но я не знаю, как его решить.