у меня есть виртуальная машина 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
, но ни один не сработал.
Я подозреваю, что проблема в перенаправлении, сделанном для доступа к моему конкретный экземпляр на сервере, но я не знаю, как ее решить.