所以我在Docker容器中运行了一个Nginx,我在localhost上运行了一个mysql,我想从我的Nginx中连接到MySql.MySql在localhost上运行,而不是将端口暴露给外部世界,所以它绑定在localhost上,而不是绑定在机器的ip地址上.
有没有办法从这个docker容器中连接到这个MySql或localhost上的任何其他程序?
我正在尝试使用PyMySQL连接到localhost上的MySQL:
import pymysql
conn = pymysql.connect(db='base', user='root', passwd='pwd', host='localhost')
Run Code Online (Sandbox Code Playgroud)
但是(在Python 2.7和Python 3.2上)我得到错误:
socket.error:[Errno 111]连接被拒绝
pymysql.err.OperationalError:(2003,"无法连接到'localhost'上的MySQL服务器'(111)")
我确定mysqld正在运行,因为我可以使用mysql命令或phpMyAdmin 进行连接.而且,我可以使用几乎相同的代码在Python 2上使用MySQLdb进行连接:
import MySQLdb
conn = MySQLdb.connect(db='base', user='root', passwd='pwd', host='localhost')
Run Code Online (Sandbox Code Playgroud)
似乎问题出在PyMySQL方面而不是MySQL上,但我不知道如何解决它.