我在Microsoft Azure上创建了一个Ubuntu 15.10 VM。 在服务器上,我创建了一个运行MySQL的Docker容器(IP:172.17.0.2)
from itertools import combinations
def ratios(**kwargs):
pairs = combinations(sorted(kwargs.keys()), 2)
return dict((p + q, kwargs[p] / kwargs[q]) for p, q in pairs)
print(ratios(a=600, b=3, c=2))
我可以通过ssh连接到VM,然后访问在docker容器中运行的MySQL-Server。
我现在想从外部访问MySQL-Server,以便我在Microsoft Azure(同一个Ressource Group)上的WebApp可以连接到数据库。
我已经将VM的端口3306转发到172.17.0.2:3306。
使用我本地PC上的MySQL-Workbench,我无法连接到MySQL-Server。 事实上,我不确定我需要提供哪些凭据来连接。 我尝试使用VM的公共IP和MySQL-Server的root密码。但我不应该在某处提供VM本身的密码和用户吗?
答案 0 :(得分:1)
除了实际VM上的防火墙之外,Azure使用单独的VPC网络安全组管理端口安全性。默认情况下,与VM关联的网络组不允许端口3306上的入站TCP连接。您必须手动添加:
答案 1 :(得分:0)
我也遇到了使官方MySQL图像运行和访问的麻烦。 sameersbn/docker-mysql提供了一个简单易用的包装器,允许您指定要设置的用户和数据库。
我的docker-compose文件包含以下部分:
db:
image: sameersbn/mysql:latest
volumes:
- /opt/mysql/data:/var/lib/mysql
environment:
- DB_USER=${DB_USER}
- DB_PASS=${DB_PASS}
- DB_NAME=theDatabaseName
ports:
- "3306:3306"
细节:
image
- 上面提到的包装器。volumes
- 映射持久主机上的数据。environment
- 定义数据库设置的变量。使用DB_NAME
提供纯文本,或通过${...}
语法访问环境变量。ports
- 映射主机上的端口3306,以便远程访问它。